如何在 C# 中将 Excel 文件的一部分转换为简化的 DataSet?

Posted

技术标签:

【中文标题】如何在 C# 中将 Excel 文件的一部分转换为简化的 DataSet?【英文标题】:How do I convert part of an Excel file to a reduced DataSet in C#? 【发布时间】:2017-04-14 17:39:00 【问题描述】:

我有一个包含多个工作表的 Excel 文档。

我已使用以下代码上传文件并将其转换为DataTable 对象:

FileStream stream = File.Open(SourceUpload.Fullpath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //xlsx file format
ds = excelReader.AsDataSet();

如果有 100000 行可用,此代码将转换整个文件,但我希望 DataSet 包含此数据的子集(1000 行和 1000 列)。

这可能吗,我该怎么做?

【问题讨论】:

我记得在使用 ODBC 连接将 Excel 文件导入 DataSet 时,有一种方法可以通过 SQL 选择数据子集。这可能是您的理想解决方案。我将查看我的代码库,看看是否可以为您找到解决方案。同时,您能否提供一个包含多个工作表的示例 Excel 文件以及您希望生成的 DataSet 的外观示例? 【参考方案1】:

您可以使用一些Linq 来实现这一点。所以像:

DataTable dt = //get data from excel or wherever
IEnumerable<DataRow> data = dt.AsEnumerable().Select(a => a).Take(1000);//Select everything but only take the top 1000 records
DataTable someTable = data.CopyToDataTable(); //copy the data 

//finally add it to our data set
DataSet ds = new DataSet();
ds.Tables.Add(someTable);

请注意,上面的 sn-p 来自我的头顶,我没有测试过。

【讨论】:

above code.i 已转换超过 5laksh 行的 excel 文件,出现以下异常。引发了“System.OutOfMemoryException”类型的异常。 @RajaGanapathy 您能否提供一个您的 excel 文件外观示例

以上是关于如何在 C# 中将 Excel 文件的一部分转换为简化的 DataSet?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将文件导出到 excel 2007+

如何在python中将excel文件转换为这种格式? [复制]

如何在 Python 中将 Azure Blob 文件 CSV 转换为 Excel

如何在 C# 中将 SVG 文件转换为 EMF 文件

如何在 Angular 中将 csv 或 excel 文件转换为 sql 输入数组?

如何在同一个Excel工作簿中将两个不同的CSV文件转换为两个工作表?