次の接続文字列を使用して、マクロによって生成されたピボット テーブルを含む Excel シートを読み取ろうとしています。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path;
Extended Properties="Excel 8.0;HDR=NO;";
問題は、値がデータセットに表示されず、列と行のラベルのみが表示され、必要な値が表示されないことです。
そのようなファイルを読むアイデアはありますか?
理由はわかりませんが、プロバイダーを に変更することProvider=Microsoft.ACE.OLEDB.12.0
で、データが正しく読み込まれるようになりました。
塗りつぶしデータセットは遅くなりますが、私は探しているものを手に入れました
答えはわかりませんが、Epplus ( http://epplus.codeplex.com/ ) が役立つかもしれません。
これにより、テーブルが読み取られ、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);
}