Open XML SDK v2.0을 사용하여 Excel 스프레드 시트를 만들 때 Excel 출력이 처음 몇 개월 동안 성공적으로 처리되었습니다. 최근 Excel (모든 버전)에서 "Excel에서 'zot.xlsx'에 읽을 수없는 콘텐츠가 있음을 알리기 시작했습니다.이 통합 문서의 내용을 복구 하시겠습니까?" MemoryStream을 저장소로 사용하여 웹 응용 프로그램에 파일을 만들고이 파일을 MIME 형식이 "application/vnd.openxmlformats-officedocument.spreadsheet.sheet"인 HTTP 응답에서 byte []로 보냅니다. 잘못된 파일의 압축되지 않은 내용은 오류없이 파일의 압축되지 않은 내용과 동일합니다.MemoryStream을 사용하여 Open XML 스프레드 시트를 만들 때 Excel과 "읽을 수없는 콘텐츠"
답변
우리는 너무 많은 시간 동안 이것을 쫓아갔습니다. 길을 따라 몇 개의 빨간 청어를 줍지 만 결국에는 나쁜 파일이 한 점에서 다르다는 결론을 내 렸습니다. 파일 길이가 다릅니다. MemoryStream을 반환하고 바이트 []를 HTTP 응답에 쓰 기 전에 간단한 'stream.Capacity = stream.Length;'를 사용하여 용량과 길이가 동일하도록 MemoryStream을 자르십시오.
이제는 Excel에서 파일의 추가 콘텐츠를 보안 위험 요소로 '읽을 수없는 콘텐츠'로 탐지하고 위험을 수용 할 수있는 과거의 성가신 오류가 발생합니다.
참고 : 이전
확인 자신의 질문에 대답을했다 원래의 포스터에서 촬영 대답은 하나 하나 다음은 엑셀에서 "읽을 내용의 오류"를 제거합니다.
1. 정확한 데이터가 올바른 방법으로 올바른 셀에 기록되었는지 확인하십시오. 모든 셀에 대해이 작업을 수행하십시오.이 문제를 일으키는 셀에 잘못 작성된 데이터가 발생할 수 있습니다. 셀 색인이 올바르게 사용되었습니다.
2. 공유 문자열 대신 Cell.DataType = new EnumValue (CellValues.String)를 사용하여 시도하십시오.이 오류를 제거하는 데 도움이 될 수 있습니다.
3. 모든 셀에 # VALUE/# REF/# NAME이 있으면? 또는 #DIV 오류가 발생하면 해당 오류를 제거하십시오.
4. 서버에서 파일을 다운로드하는 동안 문제가 발생합니다. 웹 응용 프로그램에서 Excel 스프레드 시트 만들기, MemoryStream 사용 및 다운로드. 당신이 ASPOSE 기술을 사용하는 경우
Me.Response.Clear()를
Me.Response.Buffer = False
Me.Response.AddHeader("Accept-Ranges", "bytes")
Response.ContentType = "application/octet-stream"
Response.AddHeader("Connection", "Keep-Alive")
Response.ContentEncoding = Encoding.UTF8
asposeReport.ShowSavePopUp(Me.Response, controller.GetFromSession(Constants.SESSION_REPORT), strReportFileName)
Me.Response.Flush()
Me.Response.Close()
Me.Response.End()
사용 HttpContext.Current.Response.Clear()
Response.ClearHeaders()
Response.Buffer = False
msReportStream = CType(controller.GetFromSession
(Constants.SESSION_REPORT), MemoryStream)
Response.ContentType = "application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet"
Response.AddHeader("Connection", "Keep-Alive")
Response.AddHeader("Content-Disposition", String.Format("attachment;
filename={0}", strReportFileName))
Response.ContentEncoding = Encoding.UTF8
Response.BinaryWrite(msPNLReportStream.ToArray())
Response.Flush()
Response.Close()
Response.End()--use this when the code is deployed in server only not required in local.gives error in local.
msReportStream.Dispose()
msReportStream.Close()
:
는 다음 코드를 사용하여
Microsoft Office 용 Open XML SDK 2.5 Productivity Tool을 사용하여 .xlsx 파일을 열고 문서의 유효성을 검사하면 읽을 수없는 cont를 유발하는 유효성 검사 오류가 발생합니다 엔
당신의 질문에 대답하는 것은 아주 좋은 형태입니다. 그러나 질문에 대답을 넣는 것은 나쁜 형태입니다. 답변을 답안지에 넣고 올바른 것으로 표시해야하므로 답이없는 질문 목록에 귀하의 질문이 나오지 않습니다. –