两个几乎不相等的excel表使用OLEDB加载 – 有一个头和一个没有
我正在加载两个Excel工作表。 两者在第1行中的标题完全相同。我使用相同的代码。
现在,我得到了第二个文件的标题,而第一个没有标题。
码:
private static string GetExcelConnectionString(string Filename){return "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + Filename + ";Extended Properties = \"Excel 12.0 Xml;HDR=YES\"";} private static void AddToListByOLE(string Filename, ref System.Collections.Generic.List<System.Data.DataTable> MyList, int nTab = -1) { string sql = string.Empty; using (System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection(GetExcelConnectionString(Filename))) { using (System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter()) { System.Data.DataTable dt = new System.Data.DataTable(); using (System.Data.OleDb.OleDbCommand command = cn.CreateCommand()) { cn.Open(); System.Data.DataTable dtSchema = cn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string firstSheetName = dtSchema.Rows[0].Field<string>("TABLE_NAME"); sql = "SELECT * FROM [" + firstSheetName + "]"; command.CommandText = sql; adapter.SelectCommand = command; adapter.Fill(dt); if (dt.Rows.Count == 0) { System.Data.OleDb.OleDbDataReader reader = command.ExecuteReader(); dt.Load(reader); } cn.Close(); MyList.Add(dt); } } } }
Imput – 两个excel工作簿显示重叠:
连接string:
首次导入的结果(DataTable中没有标题):
第二次导入的结果(正确导入标题):
有人有想法吗? 我真的没有想法,因为我使用完全相同的连接string(文件名除外)和相同的function在循环中加载此文件。
预先感谢您,J.
对不起。 我打开文件并保存另一次 – 不是导入function。 也许,这个文件有一个旧格式 – 我通过EM @ il收到它。
- c ++程序读取excel数据的单列,其中包含两个由逗号分隔的double值,并将每个值存储在自己的数组中
- excel或c#或SQL解决scheme来获取期数
- 当使用c#从Excel中读取大于12位的数字时,数字被转换为零
- 用Excel互操作,我检出一个文件后,如何检查回来?
- 用Excel C-API函数“xlfGetDocument”询问“最后使用的行/列”将返回“实际使用的范围”
- 有没有一个C#库,将执行Excel NORMINV函数?
- Excel和C#.NET
- 如何从C#中的工作簿中删除空的工作表
- C#Excel COM互操作抛出exception“HRESULTexception:0x800A03EC”