EPPlus C# 将数据导出到 Excel。 Table 数据覆盖名称框而不是 "Insert" 并保留其他单元格
EPPlus C# Export data to Excel. Table data overwrites Namebox instead of "Insert" and preserving other cells
我正在使用 EPPlus C# 库生成 Excel 文件。 Excel 模板将填充来自 DataTable 的 SQL 服务器数据。模板文件使用名称框,数据填充在这些名称框中。
问题是,例如。我在 A1 位置有名称框
B1 位置还有另一个名称框
当A1填满单行数据时..没问题。但是如果 A1 中的数据有多行,它会覆盖 A2 名称框(A2 的名称框消失了)。
A2 的名称框应下移至 A6。
(我们在一个单元格中执行 "Insert" 时看到的相同行为会将其他单元格向前移动而不是覆盖它们)。
那么 Rows 集合中的 Insert 方法呢?
// Insert row at the 4the position.
worksheet.Rows.Insert(3);
我通过使用以下逻辑插入新行解决了这个问题:
// Get current cell's address
string oldAddress = nameBox.Start.Address;
// insert new rows in worksheet to preserve other nameboxes
nameBox.Worksheet.InsertRow(nameBox.Start.Row, dt.Rows.Count);
// move to old address
nameBox.Address = oldAddress;
// Fill Name box with Datatable
nameBox.LoadFromDataTable(dt, printHeaders);
我正在使用 EPPlus C# 库生成 Excel 文件。 Excel 模板将填充来自 DataTable 的 SQL 服务器数据。模板文件使用名称框,数据填充在这些名称框中。
问题是,例如。我在 A1 位置有名称框
B1 位置还有另一个名称框
当A1填满单行数据时..没问题。但是如果 A1 中的数据有多行,它会覆盖 A2 名称框(A2 的名称框消失了)。
A2 的名称框应下移至 A6。
(我们在一个单元格中执行 "Insert" 时看到的相同行为会将其他单元格向前移动而不是覆盖它们)。
那么 Rows 集合中的 Insert 方法呢?
// Insert row at the 4the position.
worksheet.Rows.Insert(3);
我通过使用以下逻辑插入新行解决了这个问题:
// Get current cell's address
string oldAddress = nameBox.Start.Address;
// insert new rows in worksheet to preserve other nameboxes
nameBox.Worksheet.InsertRow(nameBox.Start.Row, dt.Rows.Count);
// move to old address
nameBox.Address = oldAddress;
// Fill Name box with Datatable
nameBox.LoadFromDataTable(dt, printHeaders);