如何频转换流Excel文件数据表C#? [英] How convert stream excel file to datatable C#?
问题描述
我用Epplus从流中读取XLSX文件。
它有一个缺陷,它不能读我的workbook.How一些列可以读取流数据表XLSX文件,而无需epplus?
我的大code:
公共静态数据集ReadExcelFile(流流)
{
尝试
{
// 2。从OpenXML的Excel文件读取(2007格式; * .xlsx)格式
IExcelDataReader excelReader =
ExcelReaderFactory.CreateOpenXmlReader(流);
// ...
DataSet的结果= excelReader.AsDataSet(); 返回结果; }
赶上(例外X)
{
扔X;
}
}
我没有举报,但我想这么多combinations.If有工作表中的空列,epplus读者阅读着正确的列值。
的这一个bug,它不能读取我的工作簿中的某些列的
块引用>可以形容的bug,你有没有报道它,或者它已经知道,什么版本您使用的?
下面是一个简单的方法来加载Excel文件到
数据表
与EPPlus。公共静态数据表getDataTableFromExcel(字符串路径)
{
使用(VAR PCK =新OfficeOpenXml.ExcelPackage())
{
使用(VAR流= File.OpenRead(路径))
{
pck.Load(流);
}
变种WS = pck.Workbook.Worksheets.First();
数据表TBL =新的DataTable();
布尔hasHeader = TRUE; //相应调整(我已经提到,这是一个简单的方法)
的foreach(在ws.Cells变种firstRowCell [1,1,1,ws.Dimension.End.Column])
{
tbl.Columns.Add(?hasHeader firstRowCell.Text:的String.Format(列{0},firstRowCell.Start.Column));
}
VAR STARTROW = hasHeader? 2:1;
为(VAR的rowNum = STARTROW;&的rowNum LT = ws.Dimension.End.Row;的rowNum ++)
{
VAR wsRow = ws.Cells第[ROWNUM,1,的rowNum,ws.Dimension.End.Column]
VAR行= tbl.NewRow();
的foreach(在wsRow VAR细胞)
{
行[cell.Start.Column - 1] = cell.Text;
}
tbl.Rows.Add(行);
}
返回TBL;
}
}I use Epplus to reading xlsx files from stream.
It has a bug , it cant read some columns in my workbook.How can read xlsx files from stream to datatable without epplus ?
my older code:
public static DataSet ReadExcelFile(Stream stream) { try { //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //... DataSet result = excelReader.AsDataSet(); return result; } catch (Exception x) { throw x; } }
I didnt report it, but i tried so much combinations.If there are empty columns in worksheet ,epplus reader cant read correctly column values.
解决方案"It has a bug , it cant read some columns in my workbook"
Can you describe the bug, have you reported it or is it already known, what version are you using?
Here's a simple approach to load an excel file into a
DataTable
with EPPlus.public static DataTable getDataTableFromExcel(string path) { using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(path)) { pck.Load(stream); } var ws = pck.Workbook.Worksheets.First(); DataTable tbl = new DataTable(); bool hasHeader = true; // adjust it accordingly( i've mentioned that this is a simple approach) foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) { tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); } var startRow = hasHeader ? 2 : 1; for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) { var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column]; var row = tbl.NewRow(); foreach (var cell in wsRow) { row[cell.Start.Column - 1] = cell.Text; } tbl.Rows.Add(row); } return tbl; } }
这篇关于如何频转换流Excel文件数据表C#?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!