我正在使用NPOI组件从动态数据构建Excel电子表格,但是,只有第一个合并的单元格才显示文本。
在下面的代码中,我仅将循环限制为前两个单元格,因为我试图弄清楚为什么不编写文本。如上所述,数据是动态的,来自第三方服务。
var mergedrow = excel.CreateRow(0); // used for the merged text
var headerrow = excel.CreateRow(1); // used for the row containing the actual header text
var firstcol = 0;
var lastcol = 0;
for (var i = 0; i < headers.Count; i++)
{
if (i < 2)
{
ICell mergedcell = null;
var header = headers[i];
if (i == 0)
{
firstcol = 0;
mergedcell = mergedrow.CreateCell(0);
}
else
{
var column = header.TableHeaders.Count + 1; // start from the last merged column length
mergedcell = mergedrow.CreateCell(column);
firstcol = lastcol + 1;
}
lastcol = firstcol + (header.TableHeaders.Count - 1);
mergedcell.SetCellValue(header.Text);
excel.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, firstcol, lastcol));
for (var j = 0; j < header.TableHeaders.Count; j++)
{
var h = header.TableHeaders.ToList();
ICell headercell = null;
if (firstcol == 0)
{
headercell = headerrow.CreateCell(0);
}
else
{
headercell = headerrow.CreateCell(firstcol + j);
}
headercell.SetCellValue(h[j].Text);
}
}
}
此循环在Excel中创建以下输出:
如您所见,合并的第二个单元格的文本值为空白,但我在循环中设置了该单元格值。