gpt4 book ai didi

c# - 将锯齿状数组直接转换为二维数组而不迭代每个项目?

转载 作者:太空狗 更新时间:2023-10-29 23:52:16 26 4
gpt4 key购买 nike

我正在尝试将 DataTable 保存到 Excel 工作表中。我的代码是这样的。

Excel.Range range = xlWorkSheet.get_Range("A2");
range = range.get_Resize(dtExcel.Rows.Count, dtExcel.Columns.Count);
object[,] rng1 = new object[dtExcel.Rows.Count, dtExcel.Columns.Count];

Excel 范围要求范围值作为数组 [,],但我的数据表作为锯齿状数组 [][]。

object[][] rng2 = dtExcel.AsEnumerable().Select(x => x.ItemArray).ToArray();

是否有任何内置函数可以直接将锯齿状数组[][] 转换为二维数组[][]?遍历 Excel、DataTable 并分配批量数据似乎较慢。

此外,我不想为 excel 使用 DSN 设置查询。我选择 excel 存储以避免配置任何数据库。:P我在这里找到了有关将数据写入 excel 的方法的详细说明。 http://support.microsoft.com/kb/306023

最佳答案

最后我用了NPOI library为了这。它非常简单且免费。

DataTable转excel的代码如下。

HSSFWorkbook hssfworkbook = new HSSFWorkbook();
foreach (DataTable dt in DataSource.Tables)
{
ISheet sheet1 = hssfworkbook.CreateSheet(dt.TableName);

//Set column titles
IRow headRow = sheet1.CreateRow(0);
for (int colNum = 0; colNum < dt.Columns.Count; colNum++)
{
ICell cell = headRow.CreateCell(colNum);
cell.SetCellValue(dt.Columns[colNum].ColumnName);
}

//Set values in cells
for (int rowNum = 1; rowNum <= dt.Rows.Count; rowNum++)
{
IRow row = sheet1.CreateRow(rowNum);
for (int colNum = 0; colNum < dt.Columns.Count; colNum++)
{
ICell cell = row.CreateCell(colNum);
cell.SetCellValue(dt.Rows[rowNum - 1][colNum].ToString());
}
}

// Resize column width to show all data
for (int colNum = 0; colNum < dt.Columns.Count; colNum++)
{
sheet1.AutoSizeColumn(colNum);
}
}

关于c# - 将锯齿状数组直接转换为二维数组而不迭代每个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com