私の問題は以下の通りです:dataTableの操作方法は?
私はx列のオブジェクトを持ち、すべての列はy値を持っています。私は今これをExcelに持っていく必要があります。
データテーブルを簡単にエクスポートできるスニペットが見つかりました。だから私はオブジェクトをデータテーブルに持っていきます。これどうやってするの?
言語は、あなたがオブジェクトのフィールドを取得したDataTableに列を追加するためにリフレクションを使用することができますC#
私の問題は以下の通りです:dataTableの操作方法は?
私はx列のオブジェクトを持ち、すべての列はy値を持っています。私は今これをExcelに持っていく必要があります。
データテーブルを簡単にエクスポートできるスニペットが見つかりました。だから私はオブジェクトをデータテーブルに持っていきます。これどうやってするの?
言語は、あなたがオブジェクトのフィールドを取得したDataTableに列を追加するためにリフレクションを使用することができますC#
私はあなたが何をしようとしているのか分かりません。私はあなたがDataTableを作成し、それに既存のオブジェクトをロードしたいと仮定します。あなたのクラスと仮定すると、このようなものになります。
DataTable dt = new DataTable("MyTable");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(DateTime));
foreach (var o in _myObjectList) {
DataRow dr = dt.NewRow();
dr["ID"] = o.ID;
dr["Column1"] = o.Column1;
dr["Column2"] = o.Column2;
dt.Rows.Add(dr);
}
それは良い方法ですが、まさに私の問題です。 私は最初にcoloumsを知りません。 私はx個のオブジェクトを持っています。 各オブジェクトにはyの値があります。 だから時々私は500と1000の値で2 coloumsを持っている、時々私はそれぞれが自分の価値カウントを持つことができる5 coloumsを持っています。 – Kovu
これは1回のエクスポートでも、さまざまなスプレッドシートでも設定できますか? dr ["column1"]でアドレス指定する代わりに、dr [0]でアドレス指定できます。また、使用可能な列をforeachすることもできます。もしあなたがパターンを持っていれば、あなたはそれを奨励することができます。 – Spence
問題を解決したい場合は、それを記述する必要があります。この情報と問題を理解するために必要なその他の情報を使用して、質問を編集してください。 –
です:
private bool IsNullableType(Type theType)
{
return (theType.IsGenericType && theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)));
}
// Create the columns based on the data in the album info - get by reflection
var ai = new <your object without data>;
Type t = ai.GetType();
this.dataTable.TableName = t.Name;
foreach (PropertyInfo p in t.GetProperties())
{
var columnSpec = new DataColumn();
// If nullable get the underlying type
Type propertyType = p.PropertyType;
if (IsNullableType(propertyType))
{
var nc = new NullableConverter(propertyType);
propertyType = nc.UnderlyingType;
}
columnSpec.DataType = propertyType;
columnSpec.ColumnName = p.Name;
this.dataTable.Columns.Add(columnSpec);
}
this.dataGridView.DataSource = dataTable;
その後、テーブルに行を追加する:
var info = new <your object with data>;
// Add by reflection
Type t = info.GetType();
var row = new object[t.GetProperties().Length];
int index = 0;
foreach (PropertyInfo p in t.GetProperties())
{
row[index++] = p.GetValue(info, null);
}
this.dataTable.Rows.Add(row);
どのプログラミング言語:
、あなたがたDataTableにコピーするそれらのリストを持っていると仮定し、ここではどのようにですか? –
C#.net申し訳ありません.............. – Kovu