删除行会破坏合并的单元格
Deleting rows breaks merged cells
我删除了某行,这行之后的合并单元格地址是错误的。
例如,有合并单元格"A78:C78"。如果我这样做
worksheet.DeleteRow(5)
的地址
worksheet.Cells[77,1]
是"A77"。但是
worksheet.MergedCells[77,1]
为空,但应该是"A77:C77".
的地址
worksheet.Cells[78,1]
是"A78"。但是
worksheet.MergedCells[78,1]
是"A77:C77",但应该为空。
有趣和奇怪的是,在*.xlsx 中保存的文档中有合并单元格"A77:C77"。
我不明白为什么会这样。
也许有必要在删除合并单元格正确地址的行后以某种方式更新 sheet?
解决此问题的方法是在再次获取 mergedcell 地址之前保存文件,我在您提供的同一示例上尝试了以下代码,并且在 package.Save() 之后结果似乎是正确的。
using (var package = new ExcelPackage(new System.IO.FileInfo(filePath)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
var address = worksheet.Cells[78, 1];//address is "A78"
var mergedadress = worksheet.MergedCells[78, 1];//address is "A78:C78"
worksheet.DeleteRow(5);
address = worksheet.Cells[77, 1];//address is "A77"
mergedaddress = worksheet.MergedCells[77, 1];//null
address = worksheet.Cells[78, 1];//address is "A78"
mergedaddress = worksheet.MergedCells[78, 1];//address is"A77:C77"
package.Save();
}
using (var package = new ExcelPackage(new System.IO.FileInfo(filePath)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
var address = worksheet.Cells[77, 1];//address is "A77"
var mergedaddress = worksheet.MergedCells[77, 1];//Address is "A77:C77"
address = worksheet.Cells[78, 1];//address is "A78"
mergedaddress = worksheet.MergedCells[78, 1];//null
package.Save();
}
我用过EPPLUS v4.1.1.0
我删除了某行,这行之后的合并单元格地址是错误的。 例如,有合并单元格"A78:C78"。如果我这样做
worksheet.DeleteRow(5)
的地址
worksheet.Cells[77,1]
是"A77"。但是
worksheet.MergedCells[77,1]
为空,但应该是"A77:C77".
的地址worksheet.Cells[78,1]
是"A78"。但是
worksheet.MergedCells[78,1]
是"A77:C77",但应该为空。 有趣和奇怪的是,在*.xlsx 中保存的文档中有合并单元格"A77:C77"。 我不明白为什么会这样。 也许有必要在删除合并单元格正确地址的行后以某种方式更新 sheet?
解决此问题的方法是在再次获取 mergedcell 地址之前保存文件,我在您提供的同一示例上尝试了以下代码,并且在 package.Save() 之后结果似乎是正确的。
using (var package = new ExcelPackage(new System.IO.FileInfo(filePath)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
var address = worksheet.Cells[78, 1];//address is "A78"
var mergedadress = worksheet.MergedCells[78, 1];//address is "A78:C78"
worksheet.DeleteRow(5);
address = worksheet.Cells[77, 1];//address is "A77"
mergedaddress = worksheet.MergedCells[77, 1];//null
address = worksheet.Cells[78, 1];//address is "A78"
mergedaddress = worksheet.MergedCells[78, 1];//address is"A77:C77"
package.Save();
}
using (var package = new ExcelPackage(new System.IO.FileInfo(filePath)))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
var address = worksheet.Cells[77, 1];//address is "A77"
var mergedaddress = worksheet.MergedCells[77, 1];//Address is "A77:C77"
address = worksheet.Cells[78, 1];//address is "A78"
mergedaddress = worksheet.MergedCells[78, 1];//null
package.Save();
}
我用过EPPLUS v4.1.1.0