导入excel至sql server时出现“外部表不是预期格式”的排查:
首先要注意有两个字符串,一个用于初始化SqlConnection,一个用于初始化OleDbConnection。
前者在Settings.settings中手动设置比较不容易出错,之后引用该设置:
string str=ConfigurationManager.ConnectionStrings["你的字符串名称"].ConnectionString.ToString();
而遇到的“索引XX行出错,外部表不是预期格式”是OleDbConnection实例open()时出现的,原因在于最初用第一种格式来打开一个xlsx文件了。
目前了解到有两种与excel连接的写法,注意Provider 和Properties的区别:
只用于Excel2007以前的.xls文件:
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filePath + ";Extended Properties='Excel 8.0;";
可用于xlsx的写法:
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filePath + ";Extended Properties='Excel 12.0; ";
对了,本机环境为office2007,更高级的版本我还没有测试过是否同样可行。期待反馈~