从Excel首页读取数据 - C#
问题描述:
有2个Excel表格 - FileA & FileB。从Excel首页读取数据 - C#
FileA中只有一张。它有数据&被命名为'Sep'。没有隐藏的床单肯定。
FileB有3张。第一个有数据&被命名为'Sheet1'。
用FileA测试,我写了这段代码,它工作正常。 FileB出现问题。在代码中检查FileA模式时,我看到'SEP'显示为行2。所以,写了这个获得firstsheet的名字
string FirstSheetName = dtSchema.Rows[2]["TABLE_NAME"].ToString();
但对于FILEB,Sheet1中显示为架构中第一行。
- 为什么这是不同的床单不同。
-
我应该写什么,以便我总是从firstsheet获取数据的数据。
private void GetDataFromExcel() { DataSet dsExcel = null; if (true) { OleDbCommand cmdSelect = null; OleDbDataAdapter daXls = null; OleDbConnection xlsCSV = null; DataTable dtSchema = null; try { xlsCSV = new OleDbConnection(ExcelFileConnString); if (xlsCSV.State == ConnectionState.Closed) { xlsCSV.Open(); } dtSchema = xlsCSV.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //Screenshots of dtSchema attached. if (dtSchema.Rows.Count > 0) { string FirstSheetName = dtSchema.Rows[2]["TABLE_NAME"] .ToString(); cmdSelect = new OleDbCommand("select * from [" + FirstSheetName + "]", xlsCSV); daXls = new OleDbDataAdapter(); daXls.SelectCommand = cmdSelect; dsExcel = new DataSet(); daXls.Fill(dsExcel); xlsCSV.Close(); } int count = dsExcel.Tables[0].Rows.Count; } catch (Exception) { } finally { if (xlsCSV != null && xlsCSV.State == ConnectionState.Open) { xlsCSV.Close(); xlsCSV.Dispose(); } if (cmdSelect != null) { cmdSelect.Dispose(); } } } }
我会建议使用EPPlus来读取excel文档,因此您的应用程序不依赖于正在安装的Office。 请参阅:https://epplus.codeplex.com/ – 2014-10-10 06:46:30
我第二!使用EPPLus。阅读和创建excel文件非常棒。 – navigator 2014-10-10 07:23:30
好的,谢谢.... – Qwerty 2014-10-10 07:26:48