如果你不是VBA,是使用c#,还可有更多解决办法:
1、使用 Microsoft.Office.Tools.Excel 操作。
2、使用NPOI库(可直接读取Excel文件)
可能的错误提示:
1、外部表格不是预期的格式 OLEDB 12.0与Excel 2007
2、External table is not in the expected format OLEDB 12.0 with Excel 2007
解决办法一
导出Excel文件后,再把文件导入到数据库中。 读取Excel文件时,打开连接出错。
错误为:外部表不是预期的格式
解决:检查导出的Excel是标准文件不是html,用Excel文件打开也正常。
调试代码,在conn.Open打开链接时出错。修改链接字符串,调试发现可能Excel版本问题,Exce连接字符串版本是xls (2003或以前版本),更改为Excel2007版本则正常导入。
strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + Server.MapPath("ExcelFiles/MyExcelFile.xls") + ";Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'"; //此连接只能操作Excel2003或之前版本(.xls)文件
改为
strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Server.MapPath("ExcelFiles/Mydata2007.xlsx") + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 (同时支持Excel2003 和 Excel2007 的连接字符串)
如果不能使用ace.oledb.12.0, 则要先安装Microsoft Database Engine会修复错误。 此代码适用于Office 2010/2013。
解决办法二
1、将xls文件用Excel打开,并保存一下
2、再用Access 或 asp 或其它导入,就正常了
解决办法三
请尝试以下操作,因为我过去已成功解决它。
如果您的输入文件是类型*.xlsx
尝试替换
Extended Properties="Excel 12.0"
在您的连接字符串中
Extended Properties="Excel 12.0 Xml"
这个问题通常发生在Excel文件有问题或不匹配的格式中。 复制/粘贴)。 您不需要太多输入来测试您的代码段。 几个细胞与您期望的正确信息将会做。 这种方法消除了实际Excel文件而不是C#代码的任何问题。
解决办法四
文件名是.xls,我的计算机告诉我它的97-2003格式,但是一旦我打开文件并单击保存,它默认将其保存为网页格式,并选择保存为.xls。 一般解决办法是:如果我打开文件,然后另存为.xls格式(看似多余,但显然不是),它询问我是否要覆盖现有文件,所以我这样做。 完成此操作后,VBA导入成功。
但也可以将文件名直接改为.html,再用Access的导入命令直接导入html格式
DoCmd.TransferText acImportHTML, ...
这样就正确导入了。