0

次の接続文字列を使用して、マクロによって生成されたピボット テーブルを含む Excel シートを読み取ろうとしています。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path;
Extended Properties="Excel 8.0;HDR=NO;";

問題は、値がデータセットに表示されず、列と行のラベルのみが表示され、必要な値が表示されないことです。

そのようなファイルを読むアイデアはありますか?

4

4 に答える 4

1

理由はわかりませんが、プロバイダーを に変更することProvider=Microsoft.ACE.OLEDB.12.0で、データが正しく読み込まれるようになりました。

塗りつぶしデータセットは遅くなりますが、私は探しているものを手に入れました

于 2012-10-02T15:38:59.977 に答える
1

答えはわかりませんが、Epplus ( http://epplus.codeplex.com/ ) が役立つかもしれません。

于 2012-10-02T12:05:04.243 に答える
0

これにより、テーブルが読み取られ、C# のデータ テーブルに変換されます。「sHeet」は Excel のシートの名前で、startfromrow はテーブルの読み取りを開始する場所です。excelTable は、データが格納されるデータ テーブルです。

public void ReadEx(string sHeet, int startfromrow)
       {
          excelTable.Clear();
          string excelFile =  "filepath";
          Excel.Application excel = new Excel.Application();
          Excel.Workbook wb = excel.Workbooks.Open(excelFile);
          Excel.Worksheet pivotWorkSheet = (Excel.Worksheet)wb.Sheets[sHeet];
          Excel.Range xlRange = pivotWorkSheet.UsedRange;

          int rowCount = xlRange.Rows.Count;
          int colCount = xlRange.Columns.Count;


          if (excelTable.Columns.Count <= 0)
            {
              excelTable.Columns.Add("Row Labels");
              foreach (string column in lColumns)
              {
                  excelTable.Columns.Add(column);
              }
            }

          object[] exrow = new object[colCount];
          for (int i; startfromrow <= rowCount; row++)
          {
              for (int j = 1; j <= colCount; j++)
              {
                  exrow[j-1] = xlRange.Cells[startfromrow , j].Text;
                  Console.WriteLine(xlRange.Cells[startfromrow , j].Text);
              }
              excelTable.Rows.Add(exrow);
          }
于 2014-06-05T08:40:05.987 に答える