【发布时间】:2016-05-23 18:33:39
【问题描述】:
我在 Excel 中有一个表格,我想将选定区域导入到 Excel 中的二维数组中。它必须是 C# 中的相同二维数组。我有图,请看。我想将该区域导入int array[81,81]:
【问题讨论】:
-
您也可以为此使用 EP-Plus 库。它在 Nuget 和免费开源上可用。这是它的链接:epplus.codeplex.com
我在 Excel 中有一个表格,我想将选定区域导入到 Excel 中的二维数组中。它必须是 C# 中的相同二维数组。我有图,请看。我想将该区域导入int array[81,81]:
【问题讨论】:
您可以为此使用GemBox.Spreadsheet 库(您可以使用其免费版本来实现此目的)。
这是一个您可以使用的示例:
ExcelFile workbook = ExcelFile.Load("guncellenmis.xlsx");
ExcelWorksheet worksheet = workbook.Worksheets.ActiveWorksheet;
int count = 81;
int[,] data = new int[count, count];
// Get range from "C2" to "CE82".
CellRange range = worksheet.Cells.GetSubrangeRelative(1, 2, count, count);
// Or you can retrieve the required range differently, like:
//CellRange range = worksheet.Cells.GetSubrangeRelative("C2:CE82");
//CellRange range = worksheet.Cells.GetSubrangeRelative("C2", "CE82");
// etc.
for (int row = 0; row < range.Height; ++row)
for (int column = 0; column < range.Width; ++column)
data[row, column] = range[row, column].IntValue;
编辑:
为什么要将 excel 文件导出为二维数组而不是 DataTable。
您可以将所需数据作为 DataTable 检索,如下所示:
ExcelFile workbook = ExcelFile.Load("guncellenmis.xlsx");
ExcelWorksheet worksheet = workbook.Worksheets.ActiveWorksheet;
DataTable table = worksheet.CreateDataTable(
new CreateDataTableOptions("C2", 81, 81));
【讨论】: