ClosedXml Excel 向行添加多个值
ClosedXml Excel Add multiple values to Rows
正在尝试将数组 string[]
中的值添加到 Excel 中的一行。
当我尝试使用 dt.Rows.Add(string[i])
时,它被添加到 Excel sheet。问题是它是垂直添加的,这很明显,因为我只向该行添加一个项目,然后插入一个新行。我现在的问题是如何将 string[]
中的每一项添加到一行中,以便水平显示我的数据。
例如string[] values = {"a","b","c","d"};
我现在的输出:
一个
b
c
d
我想要的输出:
a b c d(每个在不同的单元格中)。
A1=一个
B1 = b
...
我已经能够向工作中添加列sheet,我只需要我的数据是正确的。
这是我现在的代码。
//Add columns
dt.Columns.AddRange(columns.Select(c => new DataColumn(c.ToString())).ToArray());
List<string> temp;
string[] values;
for (int i = 0; i < 7; i++)
{
temp = new List<string>();
temp.Add(timeStamps[i].ToString());
foreach (var item in tagCollection)
{
if (timeStamps[i].Date == item.time)
{
temp.Add(item.min);
temp.Add(item.max);
temp.Add(item.avg);
}
}
int index = 0;
values = new string[temp.Count];
foreach (var item in temp)
{
values[index] = item;
dt.Rows.Add(values[index]);
index++;
}
}
//Convert datatable to dataset and add it to the workbook as worksheet
ds.Tables.Add(dt);
workbook.Worksheets.Add(ds);
解决方案可能会经过以下步骤:
string[] cars = { "Volvo", "BMW", "Mazda" };
table.Rows.Add(cars[0].ToString(), cars[1].ToString(), cars[2].ToString());
输出:
只需要适配自己的代码即可。
您必须保证您的数据表具有在同一行中显示所有数据所需的列。如果您不这样做,肯定会产生矩阵错误。
这对我有用。我更改了 foreach
循环并发现有一个 NewRow()
方法。
int index = 0;
values = new string[temp.Count];
DataRow newRow;
newRow = dt.NewRow();
foreach (var item in temp) {
values[index] = item;
newRow.ItemArray = temp.Cast<object>().ToArray();
index++;
}
dt.Rows.Add(newRow);
正在尝试将数组 string[]
中的值添加到 Excel 中的一行。
当我尝试使用 dt.Rows.Add(string[i])
时,它被添加到 Excel sheet。问题是它是垂直添加的,这很明显,因为我只向该行添加一个项目,然后插入一个新行。我现在的问题是如何将 string[]
中的每一项添加到一行中,以便水平显示我的数据。
例如string[] values = {"a","b","c","d"};
我现在的输出:
一个
b
c
d
我想要的输出: a b c d(每个在不同的单元格中)。
A1=一个 B1 = b ...
我已经能够向工作中添加列sheet,我只需要我的数据是正确的。 这是我现在的代码。
//Add columns
dt.Columns.AddRange(columns.Select(c => new DataColumn(c.ToString())).ToArray());
List<string> temp;
string[] values;
for (int i = 0; i < 7; i++)
{
temp = new List<string>();
temp.Add(timeStamps[i].ToString());
foreach (var item in tagCollection)
{
if (timeStamps[i].Date == item.time)
{
temp.Add(item.min);
temp.Add(item.max);
temp.Add(item.avg);
}
}
int index = 0;
values = new string[temp.Count];
foreach (var item in temp)
{
values[index] = item;
dt.Rows.Add(values[index]);
index++;
}
}
//Convert datatable to dataset and add it to the workbook as worksheet
ds.Tables.Add(dt);
workbook.Worksheets.Add(ds);
解决方案可能会经过以下步骤:
string[] cars = { "Volvo", "BMW", "Mazda" };
table.Rows.Add(cars[0].ToString(), cars[1].ToString(), cars[2].ToString());
输出:
只需要适配自己的代码即可。
您必须保证您的数据表具有在同一行中显示所有数据所需的列。如果您不这样做,肯定会产生矩阵错误。
这对我有用。我更改了 foreach
循环并发现有一个 NewRow()
方法。
int index = 0;
values = new string[temp.Count];
DataRow newRow;
newRow = dt.NewRow();
foreach (var item in temp) {
values[index] = item;
newRow.ItemArray = temp.Cast<object>().ToArray();
index++;
}
dt.Rows.Add(newRow);