Excel里行列转换很简单,直接选择性粘贴---转置。
Npoi我暂时没有发现类似的接口,不过我们可以通过重置数据源来达到同样的目的。
我们来做这样一件事:行列转换,并加上自动增加的日期。
var row0_ = sheet1.CreateRow(0);//日期行
for (int i = 0; i < data.Columns.Count; i++)
{
var row1_ = sheet1.CreateRow(i+1);//创建行
var cellName = row1_.CreateCell(0);//列名
cellName.SetCellValue(data.Columns[i].ColumnName);
for (int j = 0; j < data.Rows.Count; j++)
{
row0_.CreateCell(0).SetCellValue("日期");
var cell0_ = row0_.CreateCell(j+1);
cell0_.SetCellValue(DateTime.Now.AddDays(j).ToString("yyyy/MM/dd"));//日期
var cell1_ = row1_.CreateCell(j+1);
cell1_.SetCellValue(data.Rows[j][i].ToString());
}
}
效果: