c#错误:将Excel文件转换为.CSV文件时出现“找不到可安装的ISAM”
我正在处理一个能够将Excel文件转换为.CSV文件的项目 ,我认为在我的C#代码中有一些问题正在生成,并且错误消息找不到可安装的ISAM ,请帮我解决我的问题。
码:
if (dlgOne.FileName.EndsWith(".xlsx")) { StrConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 12.0;\""; } if (dlgTwo.FileName.EndsWith(".xls")) { StrConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 1.0;HDR=Yes;IMEX=1\""; } OleDbConnection conn = null; conn = new OleDbConnection(StrConn); conn.Open(); <------------ throw exception
在debugging模式下,应用程序抛出一个exception (line: conn.Open();
)我search了互联网,我发现我必须把Data Source
放在一个cotes之间,但在我的情况下不起作用。
这两个连接string都是错误的。
对于.xlsx,它应该是:
StrConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";";
(请注意额外的Xml部分,HDR = YES表示您的文件具有标题,IMEX = 1表示将所有数据视为文本,并将重定位的分号处理为.xlsm和.xlsb文件需要不同的连接string – 请参阅这里 )
对于.xls,它应该是:
StrConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
(注意从Excel 1.0到Excel 8.0的变化以及最后添加的分号)
平台扮演着重要的angular色:如果你的代码以64位编译,并且你安装了Office 32位(这意味着所有ODBC,ISAM等驱动程序都是32位)。 尝试使用“任何CPU”平台进行编译
- 为什么我在使用FormulaArray的时候总是收到COMexception
- 使用linq – Epplus返回值不为空的单元格
- 如何使用内存stream读取excel文件数据?
- Excelreplace值,而不会丢失格式
- 我怎样才能读取我的C#代码使用DLL的Excel 2010文件?
- Excel显示“#########”,当我尝试将DateTime.Now.tostring()写入Excel文件中的一个单元格
- C#返回值中的工作表Function.CountIfs(…)是一个2 dim对象数组
- Excel保存文档时如何在编辑后保留OpenXml单元格属性?
- HTTP标头发送后,服务器无法追加标头c#excel内联