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

我正在尝试使用以下代码导出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 can not open the test.xlsx because file format or file
extension is not valid. Verify that the file has not been corrupted
and that the file extension matches the format of the file’

错误.

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

但是必须在不改变扩展名的情况下使用xlsx选项.

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

我怎么解决这个问题?

最佳答案 这是因为根据 https://support.microsoft.com/en-us/kb/928979,OLEDB保存为二进制文件,而不是XML

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

点赞