2017-12-01 3 views
0

외부 Excel 파일 스트림에서 OpenXml SpreadsheetDocument를 읽고 일부 수식과 값을 추가합니다.OpenXML SpreadsheetDocument를 스트림에 저장

그러나 스트림에 저장하려고하면 대부분의 데이터가 손실되고 열 수 없습니다.

var stream= new MemoryStream(); 
. 
. 
. 
spreadsheetDocument.WorkbookPart.Workbook.Save(stream); 
stream = new MemoryStream(stream.ToArray()); 
stream.Position = 0; 

return stream; 

답변

0

MemoryStream 정말 필요한 위치 : 여기

내가 사용하는 코드입니다?

MemoryStream을 유도하기 전에 tempStream을 플러시하십시오. 예 : 또한

spreadsheetDocument.WorkbookPart.Workbook.Save(tempStream); 
tempStream.Flush(); 
stream = new MemoryStream(tempStream.ToArray()); 

, 당신은 출력을 파일로 저장하거나 메모리에서 읽습니까? 즉시 MemoryStream의 콘텐츠가 논리적으로 손실됩니다.

+0

2 개의 MomoryStream은 실제로 필요하지 않습니다. 메모리에서 출력을 읽고 브라우저로 렌더링합니다. 그리고 나는 호출하지 않습니다 .Close() 따라서 "spreadsheetDocument.WorkbookPart.Workbook.Save (tempStream);"라고 불렀습니다. 제안 된 "Flush()"를 사용하지만 브라우저가 출력을 렌더링 할 수 없습니다. 그것은 말합니다 : "통합 문서가 손상되었거나 지원되지 않는 파일 형식을 사용하고 있습니다." –

+0

@BaronNtambwe, 당신이 이미이 문제를 해결하지 않았다면 (미안, 방학 중이었습니다), 완전한 기능을 보여줄 수 있습니까? 스트림을 파일에 저장하려고 시도 했습니까? 그러한 파일을 읽을 수 있습니까? – r41n

+0

OpenXML과 CloseXML을 조합하여 사용하게되었습니다. OpenXML로 처리하고 CloseXML에 스트림을 전달하고 저장합니다. 그런 식으로 잘 작동했습니다. –