无法在c#中打开excel文件以获取不同的格式扩展错误

时间:2013-04-15 05:49:07

标签: c# .net excel

无法在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];
        }

1 个答案:

答案 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."

希望它有所帮助。