2017-04-24 3 views
3

Je supprime une ligne et l'adresse de la cellule fusionnée après cette ligne est erronée. Par exemple, il existe des cellules fusionnées "A78: C78". Si jeLa suppression de lignes interrompt les cellules fusionnées

worksheet.DeleteRow(5) 

Adresse de

worksheet.Cells[77,1] 

est "A77". Mais

worksheet.MergedCells[77,1] 

est nul, mais ce devrait être "A77: C77".

Adresse de

worksheet.Cells[78,1] 

est "A78". Mais

worksheet.MergedCells[78,1] 

est "A77: C77", mais il devrait être nul. Ce qui est intéressant et étrange, il y a des cellules fusionnées "A77: C77" dans le document enregistré dans * .xlsx. Je ne peux pas comprendre pourquoi cela arrive. Peut-être qu'il est nécessaire de mettre à jour la feuille après avoir supprimé les lignes pour l'adresse correcte des cellules fusionnées?

Répondre

1

La solution pour contourner ce problème est d'enregistrer le fichier avant d'obtenir l'adresse de la cellule fusionnée à nouveau, j'ai essayé le code suivant sur le même exemple que vous avez fourni, et les résultats semblent être corrects après 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(); 
     } 

J'ai utilisé EPPLUS v4.1.1.0