用字符串数组填充数据表
populate datatable with arrays of strings
如何用字符串数组填充此数据表?我正在使用此模板,但我只能添加硬编码的数据...我有一个字符串 [] 值,其中包含我的数据,应该添加到数据 table。我认为这很容易,但我看不到。我一直在尝试遍历它,但这似乎不起作用?认为我错过了关键的一步。
我在这里创建了我的数据table :
DataTable dt = new DataTable() { TableName = "MBR" };
向其中添加列
string[] columns = new string [l];
for (int i = 0; i < l; i++)
{
columns[i] = tags[i];
}
for (int i = 0; i < timeStamps.Count(); i++)
{
foreach (var item in tagCollection)
{
if (timeStamps[i].Date == item.time)
{
Console.WriteLine(item.time + " " + item.name );
}
}
}
dt.Columns.AddRange(columns.Select(c => new DataColumn(c.ToString())).ToArray());
我在我的同事正在使用的模板中使用了这个,我们需要在此处提供数据
var rows = new string[][]
{
new string[] {"1", "2", "false" },
new string[] { "test", "10000", "19.9" },
};
foreach (var row in rows)
{
dt.Rows.Add(row);
}
//Convert datatable to dataset and add it to the workbook as worksheet
ds.Tables.Add(dt);
workbook.Worksheets.Add(ds);
我有很多列,比如 500+。我需要向每一列添加一条从我的字符串 [] 中获取的数据。它可以包含 10 条或 500 条以上的记录。我需要将每条记录添加到一行中。我的专栏已经在做这件事了。我只需要一种方法将多个数组添加到 table
以下是您可以如何从人员文件中填充数据table:
var people = new DataTable();
people.Columns.Add("Name");//string
people.Columns.Add("Age", typeof(int));
people.Columns.Add("HireDate", typeof(DateTime));
people.Columns.Add("IsManager", typeof(bool));
foreach(var line in File.ReadLines("people.csv")){
var bits = line.Split(',');
dt.Rows.Add(new object[]{
bits[0], //Name
int.Parse(bits[1]), //Age
DateTime.Parse(bits[2]), //HireDate
bool.Parse(bits[3]) //IsManager
});
}
当然,如果您从 CSV 中读取数据,最好使用像 Csvhelper 这样的库 - 它可以直接读入 DataTables,并且比这个例子复杂得多。这只是为了展示“制作数据table,添加列,通过为列提供值来添加行”的过程
最好为此创建一个强类型数据table:
- 向您的项目添加一个新的 DataSet 类型的文件并为其取一个好名字
- 打开它,右击表面,选择添加数据表,给它一个合理的名字
- 右键单击 table,选择添加列..添加列并设置其名称、数据类型、默认值等...
- 重复直到完成所有列
除了创建 table 的实例外,在您的代码中使用它与上面的大部分相同。它是一个内部 class,因此您也可以使用数据集的名称创建它:
var dt = new YourDataSetNameHere.YourDataTableNameHere_DataTable();
//the columns are already added, you don't need to add them
foreach(var line in ...){
...
dt.Add_YourDataTableNameHere_Row(
bits[0], //Name
int.Parse(bits[1]), //Age
DateTime.Parse(bits[2]), //HireDate
bool.Parse(bits[3]) //IsManager
);
}
它们比常规的弱类型数据好用很多tables
这对我有用:
DataTable dt = new DataTable() { TableName = "MBR" };
dt.Columns.Add(new DataColumn("A", typeof(string)));
dt.Columns.Add(new DataColumn("B", typeof(string)));
dt.Columns.Add(new DataColumn("C", typeof(string)));
var rows = new string[][]
{
new string[] {"1", "2", "false" },
new string[] { "test", "10000", "19.9" },
};
foreach (var row in rows)
{
dt.Rows.Add(row);
}
这给了我:
如何用字符串数组填充此数据表?我正在使用此模板,但我只能添加硬编码的数据...我有一个字符串 [] 值,其中包含我的数据,应该添加到数据 table。我认为这很容易,但我看不到。我一直在尝试遍历它,但这似乎不起作用?认为我错过了关键的一步。 我在这里创建了我的数据table :
DataTable dt = new DataTable() { TableName = "MBR" };
向其中添加列
string[] columns = new string [l];
for (int i = 0; i < l; i++)
{
columns[i] = tags[i];
}
for (int i = 0; i < timeStamps.Count(); i++)
{
foreach (var item in tagCollection)
{
if (timeStamps[i].Date == item.time)
{
Console.WriteLine(item.time + " " + item.name );
}
}
}
dt.Columns.AddRange(columns.Select(c => new DataColumn(c.ToString())).ToArray());
我在我的同事正在使用的模板中使用了这个,我们需要在此处提供数据
var rows = new string[][]
{
new string[] {"1", "2", "false" },
new string[] { "test", "10000", "19.9" },
};
foreach (var row in rows)
{
dt.Rows.Add(row);
}
//Convert datatable to dataset and add it to the workbook as worksheet
ds.Tables.Add(dt);
workbook.Worksheets.Add(ds);
我有很多列,比如 500+。我需要向每一列添加一条从我的字符串 [] 中获取的数据。它可以包含 10 条或 500 条以上的记录。我需要将每条记录添加到一行中。我的专栏已经在做这件事了。我只需要一种方法将多个数组添加到 table
以下是您可以如何从人员文件中填充数据table:
var people = new DataTable();
people.Columns.Add("Name");//string
people.Columns.Add("Age", typeof(int));
people.Columns.Add("HireDate", typeof(DateTime));
people.Columns.Add("IsManager", typeof(bool));
foreach(var line in File.ReadLines("people.csv")){
var bits = line.Split(',');
dt.Rows.Add(new object[]{
bits[0], //Name
int.Parse(bits[1]), //Age
DateTime.Parse(bits[2]), //HireDate
bool.Parse(bits[3]) //IsManager
});
}
当然,如果您从 CSV 中读取数据,最好使用像 Csvhelper 这样的库 - 它可以直接读入 DataTables,并且比这个例子复杂得多。这只是为了展示“制作数据table,添加列,通过为列提供值来添加行”的过程
最好为此创建一个强类型数据table:
- 向您的项目添加一个新的 DataSet 类型的文件并为其取一个好名字
- 打开它,右击表面,选择添加数据表,给它一个合理的名字
- 右键单击 table,选择添加列..添加列并设置其名称、数据类型、默认值等...
- 重复直到完成所有列
除了创建 table 的实例外,在您的代码中使用它与上面的大部分相同。它是一个内部 class,因此您也可以使用数据集的名称创建它:
var dt = new YourDataSetNameHere.YourDataTableNameHere_DataTable();
//the columns are already added, you don't need to add them
foreach(var line in ...){
...
dt.Add_YourDataTableNameHere_Row(
bits[0], //Name
int.Parse(bits[1]), //Age
DateTime.Parse(bits[2]), //HireDate
bool.Parse(bits[3]) //IsManager
);
}
它们比常规的弱类型数据好用很多tables
这对我有用:
DataTable dt = new DataTable() { TableName = "MBR" };
dt.Columns.Add(new DataColumn("A", typeof(string)));
dt.Columns.Add(new DataColumn("B", typeof(string)));
dt.Columns.Add(new DataColumn("C", typeof(string)));
var rows = new string[][]
{
new string[] {"1", "2", "false" },
new string[] { "test", "10000", "19.9" },
};
foreach (var row in rows)
{
dt.Rows.Add(row);
}
这给了我: