Больше ожидания, когда я использую статический WKWebView

Когда вам нужно добавить данные к существующему листу, вам нужно выяснить, где была последняя используемая строка, и начать добавлять данные после этой строки. Ваш текущий код для этой «последней» строки неудобен, как только вы начинаете добавлять строки, которые вы продолжаете проверять на эту «последнюю» строку, которая не нужна. Метод getData() просто добавляет данные в новый файл excel, где последняя строка не имеет значения. Если файл существует, вам просто нужно получить последнюю использованную строку и начать импортировать данные в следующую строку. Я предполагаю, что может быть лучше, чем ваш код, отправить индекс начальной строки для метода GetData(RowToStart) и просто увеличить значение переменной lastRow_, как показано ниже: Нет необходимости продолжать проверять эту последнюю строку.

private void getData(int lastRow_) {
  double a, b, c, d, total = 0;
  //int lastRow_ = 4;

  foreach (DataGridViewRow r in dataGridView1.Rows) {
    //if (!row.IsNewRow) {
    if (!r.IsNewRow) {
        a = Convert.ToDouble(r.Cells[2].Value);
      b = Convert.ToDouble(r.Cells[3].Value);
      c = Convert.ToDouble(r.Cells[4].Value);
      d = Convert.ToDouble(r.Cells[5].Value);

      total = a + b + c + d;

      xlWorkSheet.Cells[lastRow_, 1] = "Hi";
      xlWorkSheet.Cells[lastRow_, 2] = "Hello";
      xlWorkSheet.Cells[lastRow_, 3] = Convert.ToString(total);
      lastRow_++;
      //lastRow_ = xlWorkSheet.Cells.Find(
      //            "*",
      //            xlWorkSheet.Cells[1, 1],
      //            misValue,
      //            Microsoft.Office.Interop.Excel.XlLookAt.xlPart,
      //            Microsoft.Office.Interop.Excel.XlSearchOrder.xlByRows,
      //            Microsoft.Office.Interop.Excel.XlSearchDirection.xlPrevious,
      //            misValue,
      //            misValue,
      //            misValue).Row + 1;
    }
  }
  total = 0;
}

Если файл является новым, вы вызываете этот метод, как показано ниже.

 .
 .
 .
  xlWorkSheet.Cells[3, 1] = "Header1";
  xlWorkSheet.Cells[3, 2] = "Header2";
  xlWorkSheet.Cells[3, 3] = "Total";
  getData(4);
 .
 .
 .

Если файл уже существует, и вам необходимо добавить данные на существующий рабочий лист чтобы получить последнюю использованную строку, затем запустите следующую строку. Вы можете вызвать getData(RowToStart), как показано ниже.

 .
 .
 .

 xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBigSheet.get_Item("Sheet1");
 Microsoft.Office.Interop.Excel.Range last = xlWorkSheet.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
 int lastUsedRow = last.Row;
 getData(lastUsedRow + 1);
 .
 .
 .

Надеюсь, это имеет смысл.

0
задан Ninja 26 March 2019 в 17:21
поделиться