C# 使用 NPOI 合并工作簿中指定列的重复行
使用 NPOI 库创建工作簿,然后对指定列的重复行进行合并可以按照以下步骤进行:
- 引入 NPOI 库的命名空间:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
- 创建工作簿和工作表:
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet('Sheet1');
- 创建单元格样式(可选,用于设置合并后的单元格样式):
ICellStyle cellStyle = workbook.CreateCellStyle();
// 设置样式
- 创建数据列表:
List<string[]> data = new List<string[]>
{
new string[] { 'A', 'B', 'C' },
new string[] { 'A', 'D', 'E' },
new string[] { 'F', 'G', 'H' },
new string[] { 'F', 'I', 'J' }
};
- 遍历数据列表,同时维护一个字典来记录已经合并的行:
Dictionary<string, int> mergedRows = new Dictionary<string, int>();
for (int i = 0; i < data.Count; i++)
{
string value = data[i][0];
if (!mergedRows.ContainsKey(value))
{
mergedRows[value] = i;
}
else
{
int lastMergeRow = mergedRows[value];
sheet.AddMergedRegion(new CellRangeAddress(lastMergeRow, i, 0, 0));
}
// 写入数据
IRow row = sheet.CreateRow(i);
for (int j = 0; j < data[i].Length; j++)
{
row.CreateCell(j).SetCellValue(data[i][j]);
}
}
- 保存工作簿:
using (FileStream fs = new FileStream('workbook.xlsx', FileMode.Create))
{
workbook.Write(fs);
}
以上代码将会按照第一列的值进行合并相同的行,并创建一个包含合并结果的工作簿。你可以根据需要修改列索引和数据列表的结构。
原文地址: https://www.cveoy.top/t/topic/p7El 著作权归作者所有。请勿转载和采集!