0

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

1 回答 1

0

这是因为该文件实际上只是一个带有 XLS 扩展名的 CSV 文件,以便在 Excel 中打开它。

它发生在新版本的 Excel 中。年长的人会很高兴地出口它们。

有关详细信息,请参阅此 Microsoft 文档:

http://support.microsoft.com/kb/948615

一种选择是简单地将文件名重命名为 .csv,并保持用户界面说它是一个 Excel 文件(Excel 很乐意读取 csv 文件)。鉴于 Windows 倾向于隐藏文件扩展名,这似乎是一个相当有吸引力的选择。

编辑

“外部表不是预期的格式。” 通常在尝试使用带有以下连接字符串的 Excel 2007 文件时发生:Microsoft.Jet.OLEDB.4.0 和 Extended Properties=Excel 8.0

经过:

Excel“外部表格不是预期的格式。”

希望它有帮助。

于 2013-04-15T05:52:11.823 回答