2017-11-16 3 views
0

ExcelデータをDataTableに入れていますが、Excelの列名をDataTableのデータの最初の行としています。 Excelの最初の行をDataTableの列として設定するのに役立ちます。 PS:私はMicrosoft.Offfice.Interop.ExcelとされたSystem.Data.DataTable名前空間 を使用していますこれは私のコードです:DataTableに列名を設定する方法

connExcel.Open(); 
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]"; 
oda.SelectCommand = cmdExcel; 
new System.Data.OleDb.OleDbDataAdapter(cmdExcel).Fill(dt); 
connExcel.Close(); 

私はDataTableのDTに指定されたExcelシートのすべてのデータを取得していますが、それは取っていますDATATABLE

+0

interopは使用しないでください。それはあなたの生産に多くの問題を引き起こすつもりです。 – VDWWD

+0

私はdataTableにデータを取る必要があります。私はInteropよりも良い方法を提案します –

+0

EPPlusのような特殊なライブラリです。 – VDWWD

答えて

0

カラム名を変更するには、ColumnNameを使用します。

DataTable table = new DataTable(); 

table.Columns.Add("A", typeof(int)); 
table.Columns.Add("B", typeof(string)); 

table.Columns[0].ColumnName = "Column A"; 
table.Columns[1].ColumnName = "Column B"; 

table.Rows.Add(99, "test row"); 
0
DataTable tab = new DataTable(); 
for (int i = 0; i < tab.Columns.Count; i++) 
{ 
    tab.Columns[i].Caption = "example" 
} 
+0

ありがとうございます。しかし、アップロードする前にユーザーがExcelシートを変更し、3番目の列として "example"を設定するとどうなりますか?上記のコードで間違ったデータが間違った列に表示される –

0

内のデータの最初の行としてExcelの列名あなたが次のことを行うことができますねえ、それはExcelワークブックからヘッダを取って無効になります:

conn = New System.Data.OleDb.OleDbConnection(
      "provider=Microsoft.ACE.OLEDB.12.0; " & 
      "data source=" & path & "; " & 
      "Extended Properties=""Excel 12.0;HDR=No;IMEX=1""") 

接続文字列でHDRをNoに変更します。

+0

これを試しましたが、最初のDataTableに空の行を追加するだけです –

関連する問題