2014-05-23 4 views
1
FileStream s = new FileStream(@myPath, FileMode.Open, FileAccess.ReadWrite); 
IWorkbook wb = new XSSFWorkbook(s); 
s.Close(); 

ISheet isheet = wb.GetSheetAt(0); 
IRow irow = isheet.CreateRow(0); 
irow.CreateCell(0).SetCellValue("foo"); 

s = new FileStream(@myPath + "blah.xlsx", FileMode.Create); 
wb.Write(s); 
s.Close(); 

새 파일이 생성되었지만 손상되었습니다. 나는 사람들이 이것이 2.0.6 버전에서 수정되었다고 말하지만 여전히 나를 위해 일하지 않는다고 본다.xlsx를 NPOI로 편집하고 저장하면 파일이 손상됩니다.

답변

0

스트림의 작성을 위해 코드 1 행의 공유/파일 이름으로 @myPath를 사용하는 것처럼 보이지만 파일을 저장하려면 @myPath에 파일 이름을 연결하십시오. 이것이 오류의 원인이 될 수 있습니까?

+1

연결하지 않으면 지속되는 동일한 문제로 덮어 씁니다. 문제는 SharpLibZip의 Zip64 형식에서 발생했습니다. 손상된 xlsx 파일을 수동으로 압축 해제하고 다시 압축하면 작동합니다. 또는 코드에서 Zip64를 해제 할 수 있습니다. https://npoi.codeplex.com/workitem/12847 –

+0

@DenisD의 결과를 NPOI의 2.1.3.1 버전에서 확인할 수 있습니다. 파일을 수동으로 압축 해제하고 다시 압축하면 MS Excel 2013이 행복합니다. – Marcel

관련 문제