无法在c#中打开excel文件,因为您尝试以不同于指定文件扩展名的格式打开文件。在打开文件之前,请验证文件是否已损坏且是否来自受信任的源。你想现在打开文件吗?
private void button1_Click(object sender, EventArgs e)
{
string fileName = Directory.GetCurrentDirectory();
fileName += "\\" + textBox1.Text + ".xls";
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"";
var conn = new OleDbConnection(connectionString);
conn.Open();
var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
var cmd = conn.CreateCommand();
/////////////////////// sheet 1
cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";
var adapter = new OleDbDataAdapter(cmd);
var ds = new DataSet();
adapter.Fill(ds);
DataTable dt = new DataTable();
dt = ds.Tables[0];
}
答案 0 :(得分:0)
这是因为该文件实际上基本上只是一个带有XLS扩展名的CSV文件,以便在Excel中打开它。
它发生在新版本的Excel中。年纪较大的人会乐意出口他们。
有关详细信息,请参阅此Microsoft文档:
http://support.microsoft.com/kb/948615
一个选项只是将文件名重命名为.csv,并保持用户界面说它是一个Excel文件(Excel非常乐意阅读csv文件)。鉴于Windows倾向于隐藏文件扩展名,这似乎是一个相当有吸引力的选择。
修改强>
“外部表格不符合预期格式。”通常在尝试使用带有以下连接字符串的Excel 2007文件时发生:Microsoft.Jet.OLEDB.4.0和扩展属性= Excel 8.0
通过:
Excel "External table is not in the expected format."
希望它有所帮助。