0
public void LoadExcel_Click(object sender, EventArgs e)
{
    OpenFileDialog fileDLG = new OpenFileDialog();
    fileDLG.Title = "Open Excel File";
    fileDLG.Filter = "Excel Files|*.xls;*.xlsx";
    fileDLG.InitialDirectory = @"C:\Users\...\Desktop\";

    if (fileDLG.ShowDialog() == DialogResult.OK)
    {
        string filename = System.IO.Path.GetFileName(fileDLG.FileName);
        string path = System.IO.Path.GetDirectoryName(fileDLG.FileName);
        excelLocationTB.Text = @path + "\\" + filename;
        string ExcelFile = @excelLocationTB.Text;
        if (!File.Exists(ExcelFile))
            MessageBox.Show(String.Format("File {0} does not Exist", ExcelFile));

        OleDbConnection theConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFile + ";Extended Properties=Excel 12.0;");
        theConnection.Open();
        OleDbDataAdapter theDataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", theConnection);
        DataSet DS = new DataSet();
        theDataAdapter.Fill(DS, "ExcelInfo");
        dataGridView1.DataSource = DS.Tables["ExcelInfo"];
        formatDataGrid();
        MessageBox.Show("Excel File Loaded");
        toolStripProgressBar1.Value += 0;
    }
}

わかりましたので、このコードは Microsoft から取得しました。

theDataAdapter.Fill(DS, "ExcelInfo");

これは私にエラーを与えた行です。

基本的に、このコードは、ダイアログ ボックスを使用してファイルを開き、フォームに表示することになっています。Excel ファイルを開くたびに、このエラーが表示されます。空のExcelファイルを作成しようとしましたが、それでもこれが得られました。

4

2 に答える 2

1

コードを変更しました。クエリの選択を行う OleDbCommand を追加しました。ちょうど試して。

OleDbConnection theConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Projects\Demo\Demo.xls;Extended Properties=Excel 8.0;");
        theConnection.Open();
        OleDbCommand theCmd = new OleDbCommand("SELECT * FROM [Sheet1$]", theConnection);
        OleDbDataAdapter theDataAdapter = new OleDbDataAdapter(theCmd);
        DataSet DS = new DataSet();
        theDataAdapter.Fill(DS);
        theConnection.Close();
于 2014-01-14T04:07:06.107 に答える
0

このエラーは以前に見たことがありますが、コードとは関係がない可能性があります。以下のコードは問題なく動作しますが、ファイルをブロックしているソースを取得している場合は、ファイルを右クリックしてプロパティに移動し、ブロック解除を確認してください。これは、何らかのソースからファイルをダウンロードしている場合などに発生する可能性があります。適切なテストは、エクスポートされた Excel ファイルを開いて保存し、再試行することです。または、内容を新しい Excel ファイルにコピーします。

繰り返しますが、以下のコードは正常に動作しますが、ブロックを解除したり、ファイルに移動して保存したりせずにインポートしようとすると、同じエラーが発生しました。エラーメッセージはだまされています。

string excelconString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1""", filePath);
string excelQuery = "select col1 from [Sheet1$]";

DataSet ds = new DataSet();
DataTable dt = new DataTable();

using (var excelConn = new OleDbConnection(excelconString))
{
    excelConn.Open();
    using (var oda = new OleDbDataAdapter(excelQuery, excelConn))
    {
        oda.Fill(ds);
        dt = ds.Tables[0];
    }
}
于 2019-10-10T13:10:09.837 に答える