使用.xlsx扩展名导出Excel文件

时间:2016-01-26 11:10:40

标签: c# excel oledb xlsx oledbdataadapter

我'我试图用这些代码导出xlsx文件:

DataTable dataTable= new DataTable(tableName);
OleDbDataAdapter adapter = new OleDbDataAdapter(select, accessConnection);    
adapter.FillSchema(dataTable, SchemaType.Source);

foreach (DataRow result in dtResult.Rows)
{
     DataRow newRow = dataTable.NewRow();
     foreach (DataRow drAssign in dtAssignment.Rows)
     {
          newRow[drAssign["Destination"].ToString()] = result[drAssign["Source"].ToString()];
     }
     dataTable.Rows.Add(newRow);
}

adapter.Update(dataTable);

连接字符串是

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AA\Desktop\work10.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

我'我试图将100行导出到xlsx文件。当我尝试打开excel文件时,我'得到

  

' Excel无法打开test.xlsx,因为文件格式或文件   扩展无效。验证文件是否已损坏   并且文件扩展名与文件'

的格式相匹配

错误。

将.xlsx扩展名更改为.xls后,文件正在打开。

但必须在不更改扩展名的情况下使用xlsx选项。

计算机上安装了Microsoft Access数据库引擎2010版和Office Professional Plus 2013。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是因为根据https://support.microsoft.com/en-us/kb/928979

,OLEDB保存为二进制文件,而不是XML

切换到XML库,使其像ClosedXml一样,或使用标准Excel.Interop。