2

多くのシートを含むExcelドキュメントをDatatableにマージして、そのシートをwinformアプリに表示できるようにしようとしています。

読んでみると、Datatable.import(DataRow row) が最善の策であることがわかりました。したがって、私のコードは次のようになります。

DataTable returnSet = new DataTable();
foreach (DataTable datTab in ds.Tables) // ds is extracted excel sheets in a dataset
{
  foreach (DataRow datRow in datTab.Rows) 
  {
    if (datRow.IsNull(0)) //if empty first col go on to next sheet
    {
      break;
    }
    else
    {
      returnSet.ImportRow(datRow);
    }
  }
}

デバッグ時に、datRow/datTab が期待どおりであることを示していますが、各 ImportRow の後、returnSet はまだ空の 1x1 セルです。私が間違っている/欠けていることについての洞察は大歓迎です。

4

1 に答える 1

13

その理由は、現在 DataTable にスキーマがないためだと思います。元の DataTable のクローンを作成して、同じスキーマ (DataColumns など) を作成することができます。

foreach (DataTable datTab in ds.Tables) // ds is extracted excel sheets in a dataset
{
    DataTable tblClone = datTab.Clone();
    foreach (DataRow datRow in datTab.Rows) 
    {

        if (datRow.IsNull(0)) //if empty first col go on to next sheet
        {
            break;
        }
        else
        {
            tblClone.ImportRow(datRow);
        }
    }
}
于 2012-06-01T20:00:38.027 に答える