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

これは、ファイルが実際には基本的に、Excel で開くための XLS 拡張子を持つ単なる CSV ファイルであるためです。

新しいバージョンの Excel で発生します。古いものは喜んでそれらをエクスポートします。

詳細については、次の Microsoft ドキュメントを参照してください。

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

1 つのオプションは、単純にファイル名を .csv に変更し、それが Excel ファイルであることを示すユーザー インターフェイスを維持することです (Excel は csv ファイルを読み取ることができます)。Windows がファイル拡張子を隠す傾向があることを考えると、これはかなり魅力的なオプションのように思えます。

編集

「外部テーブルが予期された形式ではありません。」通常、Microsoft.Jet.OLEDB.4.0 および Extended Properties=Excel 8.0 を使用する接続文字列で Excel 2007 ファイルを使用しようとすると発生します。

通過します:

エクセル「外部テーブルの形式が正しくありません。」

お役に立てば幸いです。

于 2013-04-15T05:52:11.823 に答える