将多维字符串数组导出到新的 Excel 电子表格

本文关键字:Excel 电子表格 字符串 数组 | 更新日期: 2023-09-27 18:33:09

使用互操作,我设法将一个 excel 文档(包含填充)导入到以下格式的多维字符串数组中:

public string[,] DataArray;

我使用此方法填充数组:

try
{
  Excel.Application xlApp = new Excel.Application();
  xlWorkBook = xlApp.Workbooks.Open(FilePath);
  Excel._Worksheet xlWorksheet = xlWorkBook.Sheets[1];
  Excel.Range xlRange = xlWorksheet.UsedRange;
  rowCount = xlRange.Rows.Count;
  colCount = xlRange.Columns.Count;
  InitialiserTableauPopulation(rowCount, colCount);
  for (int x = 1; x <= colCount; x++)
  {
    for (int y = 1; y <= rowCount; y++)
    {
      DataArray[x - 1, y - 1] = xlRange.Cells[y, x].Value2.ToString();
    }
  }
  xlApp.Workbooks.Close();
}
catch (Exception ex)
{
  MessageBox.Show(ex.message);
}

在调试时,我可以看到格式是正确的,对于每个 X(列名),我有多个 Y(行数据)。

示例:DataArray[0,0] = NAME,DataArray[0,1] =

JAMES,DataArray[0,2] = ERIC等等。

现在我要做的是取这个总体的样本,制作一个新的多维字符串数组,然后将这个"样本"导出到一个新的 excel 文档中:但我迷路了。

我应该如何继续将现有的二维字符串数组导出到新的 excel 工作表,保持相同的 Array[column][row] 格式?

将多维字符串数组导出到新的 Excel 电子表格

你只需要创建一个新的Excel.Application,添加一个新Excel.Workbook并从Excel.Workbook中获取Excel.Worksheet

然后,您可以使用嵌套的 for -循环循环遍历DataArray,并根据需要使用Excel.WorksheetCell -属性添加值。

然后保存新工作簿并适当地将其关闭。这可能看起来像这样

private void SaveDataArray(string excelFileName, string[,] dataArray)
{
  var xlApp = new Application();
  var xlWorkBook = xlApp.Workbooks.Add();
  var xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.Item[1];
  for (int i = 0; i < dataArray.GetLength(0); i++)
  {
    for (int j = 0; j < dataArray.GetLength(1); j++)
    {
      xlWorkSheet.Cells[j + 1, i + 1] = dataArray[i, j];
    }
  }
  xlWorkBook.SaveAs(excelFileName);
  xlWorkBook.Close(true);
  xlApp.Quit();
}

然后像这样调用方法

  // create some sample data ...
  string[,] dataArray = new string[1, 3];
  dataArray[0, 0] = "NAME";
  dataArray[0, 1] = "JAMES";
  dataArray[0, 2] = "ERIC";
  SaveDataArray("c:''temp''exceltest.xlsx", dataArray);

虽然我没有一个很好的答案给你,但你并没有完全给我们你正在使用的互操作。 首先,我想问你为什么要用艰难的方式做到这一点? 你能不能像 http://epplus.codeplex.com/那样使用第 3 部分库