2012-05-21 5 views
2

EPPlus를 사용하는 Excel 문서의 주석 작업에 몇 가지 문제가 있습니다. 나는 주석을 추가하고 제거 할 수 있지만 때로는 성공하지 못합니다.EPPlus를 사용하여 Excel에서 주석 제거/지우기

Excel 파일 처리 결과의 유효성 확인 메시지를 표시하기 위해 주석을 사용하고 있습니다.이 파일이 다시 처리되면 유효성 검사를 다시 실행하기 전에 기존 주석을 지우고 싶습니다. 코멘트를 삭제의

내 현재의 방법은 이것이다 : 보인다

_sheet.Cells.Style.Fill.PatternType = ExcelFillStyle.None; 
    while (_sheet.Comments.Count > 0) 
    { 
     // Note: not using _sheet.Comments.RemoveAt(0) since this can throw [Exception: Key does not exist] OfficeOpenXml.RangeCollection.Delete(UInt64 key) 
     _sheet.Comments.RemoveAt(_sheet.Comments.Count - 1); 
    } 

잘 그들을 취소 할 수 있습니다. 하지만 아래와 같은 주석을 추가 할 때 :

const string author = "..."; 
    cell.Style.Fill.PatternType = ExcelFillStyle.Solid; 
    cell.Style.Fill.BackgroundColor.SetColor(Color.LemonChiffon); 
    if (cell.Comment == null) 
    { 
     cell.AddComment(message, author); 
    } 
    else 
    { 
     cell.Comment.Text = message; 
     cell.Comment.Author = author; 
    } 

경우 세포 인 특정 셀, 나는 아래의 스택 추적을 내려면 ExcelRange 인스턴스 :

System.NullReferenceException : Object reference not set to an instance of an object. 
at OfficeOpenXml.Drawing.Vml.ExcelVmlDrawingCommentCollection.AddDrawing(ExcelRangeBase cell) 
at OfficeOpenXml.Drawing.Vml.ExcelVmlDrawingCommentCollection.Add(ExcelRangeBase cell) 
at OfficeOpenXml.ExcelComment..ctor(XmlNamespaceManager ns, XmlNode commentTopNode, ExcelRangeBase cell) 
at OfficeOpenXml.ExcelCommentCollection.Add(ExcelRangeBase cell, String Text, String author) 
at OfficeOpenXml.ExcelRangeBase.Set_Comment(Object value, Int32 row, Int32 col) 
at OfficeOpenXml.ExcelRangeBase.SetSingle(_setValue valueMethod, Object value) 
at OfficeOpenXml.ExcelRangeBase.AddComment(String Text, String Author) 

이 사람이 나를 도울 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

감사합니다,

제임스

+1

이 스 니펫을 공유해 주셔서 감사합니다. 채우기를 지우고 모든 의견을 삭제해야하며 두 가지 질문이 모두 필요했습니다. – trailmax

답변

3

나는이에 대한 월 칼만 연락, 그리고 정렬중인 아니라 VML 도면 버그로 판명, 패치/라이브러리의 commit 5027f556c029에서 수정되었습니다.

관련 문제