0

OLEDB を使用して Excel からデータセットにデータを取得しようとしていますが、Excel のすべての行をデータセットに取得していません。Excel シートには 243300 行ありますが、データセット テーブルには 44401 行しかありません。

私が使用しているコードは次のとおりです。

public DataSet GetDataSet(string SheetName)  
{
        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFilePath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=0;TypeGuessRows=0'";
        OleDbConnection conExcel = new OleDbConnection(connectionString);
        conExcel.Open();
        OleDbCommand cmd1 = new OleDbCommand("Select * from [" + SheetName + "$]", conExcel);
        int cnt=  cmd1.ExecuteNonQuery();
        DataSet ds = new DataSet();
        OleDbDataAdapter da = new OleDbDataAdapter(cmd1);
        conExcel.Close();
        da.Fill(ds, "Table");
        return ds;
    } 
4

1 に答える 1

0

データセット テーブルを使用するためのコードは何ですか?

このようなことを試してみませんか (変数名に一致するように更新されていません。これは私自身のプログラムの例です):

            int worksheetNumber = 1;
            var cnnStr2 = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;IMEX=1;HDR=NO\"", exExcel);
            var cnn2 = new OleDbConnection(cnnStr2);

            // get schema, then data
            var dt2 = new DataTable();
            try
            {
                cnn2.Open();
                var schemaTable2 = cnn2.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                if (schemaTable2.Rows.Count < worksheetNumber)
                {
                    throw new ArgumentException("The worksheet number provided cannot be found in the spreadsheet");
                }
                string worksheet = schemaTable2.Rows[worksheetNumber - 1]["table_name"].ToString().Replace("'", "");
                string sql2 = String.Format("select * from [{0}]", worksheet);
                var da2 = new OleDbDataAdapter(sql2, cnn2);
                da2.Fill(dt2);
            }
            catch (Exception ex)
            {
                // ???
                throw ex;
            }
            finally
            {
                // free resources
                cnn2.Close();
            }

うまくいけば、それがあなたの状況を助けるための少なくともいくつかの参照をあなたに与えるでしょう.

于 2013-06-25T18:08:19.927 に答える