如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何在python中将excel文件转换为这种格式? [复制]
如何在 Python 中将 Azure Blob 文件 CSV 转换为 Excel