使用.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); 

连接string是

 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,因为文件格式或文件扩展名无效。 validation该文件是否已损坏,并且文件扩展名与文件的格式相匹配

错误。

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

但是xlsx选项必须在不改变扩展名的情况下工作。

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

我怎么解决这个问题?

这是因为OLEDB按照https://support.microsoft.com/zh-CN/kb/928979保存为二进制文件,而不是XML

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