gpt4 book ai didi

c# - foreach 中的 System.OutOfMemoryException 循环遍历 worsheet 行

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:39 25 4
gpt4 key购买 nike

我正在尝试打开一个 excel 文件并将内容放入数据表中以便在我的程序中进一步使用。该程序收到主题标题中的错误。

private void ReadExcelToDataSet(string FileName,string Worksheet)
{
Microsoft.Office.Interop.Excel.Application xlApp;
Microsoft.Office.Interop.Excel.Workbook xlWorkbook;
Microsoft.Office.Interop.Excel.Worksheet xlWorksheet;

xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkbook = xlApp.Workbooks.Open(FileName);
xlWorksheet = xlWorkbook.Sheets[Worksheet];

System.Data.DataTable ReadExcel = new System.Data.DataTable();
Range UsedRange = xlWorksheet.UsedRange;

foreach(Range row in xlWorksheet.Rows)
{
ReadExcel.Rows.Add(xlWorksheet.Rows.Value);
}

dataGridViewTest.DataSource = ReadExcel;
}

程序在线上失败:

ReadExcel.Rows.Add(xlWorksheet.Rows.Value);

工作表不是特别大,所有数据都是字符串或数字(没有图像或图表)。我假设尝试将 Excel 行添加到数据表行存在根本性错误。使用 Interop 将 Excel 读取到数据表的正确方法是什么,或者我应该怎么做才能防止出现内存不足问题?提前感谢您的帮助。

最佳答案

var ReadExcel = new System.Data.DataTable();
var UsedRange = xlWorksheet.UsedRange;
// Add a new column to the DataTable
var column = new DataColumn();
column.ColumnName = "rowValue";
ReadExcel.Columns.Add(column);

foreach (Range row in xlWorksheet.Rows)
{
var newrow = ReadExcel.NewRow();
// Add row.Value NOT xlWorksheet.Rows.Value
newrow["rowValue"] = row.Value;
ReadExcel.Rows.Add(newrow);
}

基本上,您有 xlWorksheet.Rows.Value 而不是 row.Value。但我猜您还想正确使用 DataTable。有关示例,请参见此处:DataTable.NewRow Method .我也用过 implicit typing .这对眼睛来说更容易。

关于c# - foreach 中的 System.OutOfMemoryException 循环遍历 worsheet 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26368337/

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