워크시트 위치가 범위를 벗어납니다.연결이 닫혔습니다.EPLUS 사용시
저는 EPLUS 4.0.3을 사용하여 템플릿으로 XLSX 파일을 열려고 합니다(빈 XLSX 파일을 사용한 적도 있습니다.
템플릿 파일(공백 또는 실제 파일)을 열지 않고 새 워크북을 작성하고 시트를 만들면 잘 작동합니다.또는 템플릿 파일을 열고 새 워크시트를 만들면 잘 작동합니다.템플릿의 FIRST 시트에 액세스하려고 할 때에만 다음 오류가 나타납니다.워크시트 위치가 범위를 벗어납니다.
다음과 같이 첫 번째 워크시트에 액세스할 수 있습니다.workBook.Worksheets.First()
작동하지 않습니다.
첫째는 더 이상 정의가 아닙니다.
그래서 이름과 방법으로 첫번째 워크시트에 접속해 보았습니다.workBook.Worksheets[1]
첫 번째 시트를 얻기 위해 0과 1을 모두 사용합니다.
내 코드:
var existingTemplate = new FileInfo(_ExcelTemplateFilePath);
using (ExcelPackage p = new ExcelPackage(existingTemplate)) {
// Get the work book in the file
ExcelWorkbook workBook = p.Workbook;
ExcelWorksheet ws = workBook.Worksheets[1];
// MY OTHER EXCEL CELL CODE HERE
}}
의 첫번째 시트와 엑셀 파일에 접속하는 방법을 아는 사람?
색인이 아닌 이름으로 워크시트를 참고하여 이 문제를 해결할 수 있었습니다.
var oSheet = package.Workbook.Worksheets["My Worksheet Name"];
첫번째 시트를 얻으려면 아래 코드를 사용합니다.
var xlWorkbook = new ExcelPackage(new FileInfo(@"C:\ESD\EXCELDATAREADTEST.xlsx"));
ExcelWorksheet workSheet = xlWorkbook.Workbook.Worksheets[1];
워크북의 올바른 위치를 가리키고 있는지 확인합니다.
저는 방금 이와 같은 문제가 있었는데 문제는 EPLus가 지정된 범위의 스프레드시트를 초킹한다는 것입니다.
스프레드시트를 읽을 수 있도록 LibreOffice Calc를 사용하여 수행한 작업은 다음과 같습니다.
- 스프레드시트 복사본 만들기
- Libre Office에서 열기
- 리스트항목
- 범위를 정의하려면 왼쪽 상단 모서리에 있는 드롭원을 클릭합니다.일반적으로 "A1"을 읽습니다.
- "이름 관리"를 선택합니다.
- 전체 목록 강조 표시
- "삭제" 클릭
이 단계를 마치면 스프레드시트를 저장/닫고 EPLus로 열 수 있었습니다.
사용했습니다.
var currentSheet = package.Workbook.Worksheets;
var workSheet = currentSheet.First();
시트에 알 수 없는 이름이 있을 수 있으며 이제 첫 번째 시트에 관심이 있기 때문입니다.
지수를 ZERO로 시작하면 됩니다.
Excel Worksheet ws = workBook.워크시트[0];
해결책 : _ExcelTemplateFilePath 매개변수를 호출하거나 배치한 올바른 Excel 파일 경로를 제공하지 않기 때문입니다.이유: 파일을 잘못된 디렉토리에 배치하고 원하는 경로에서 호출하고 있지만 안타깝게도 그렇지 않습니다.
- 프로젝트 또는 솔루션의 현재 디렉터리에 엑셀 파일을 배치했다면 예를 들어보세요. (참고: Vs studio의 현재 디렉터리는 항상 \bin\debug.netcoreapp public static FileInfo getfile = new FileInfo(디렉토리)입니다.GetCurrentDirectory() + @"\Login_Credentials.xlsx");
- Excel 파일 경로가 정적이고 하드코드가 있는 e-g(@"F:\task1 \TestTask\abc.xlsx")인 경우, 주어진 형식으로도 경로가 정확해야 파일에 액세스할 수 있습니다.
문제는 파일 형식이 EPLUS가 원하는 것이 아니라는 것입니다.xlsx를 열고 워크북은 보고 워크시트는 보지 않습니다.해결책은 원하는 형식으로 저장하는 것입니다.
Dim fiOriginal As System.IO.FileInfo
Dim fiTemp As System.IO.FileInfo
Dim strOriginalName As String
Dim strTempName As String
Rem Get a temp name
strTempName = IO.Path.GetTempFileName()
strTempName = strTempName & ".xlsx"
Rem Have EPPLUS save the original as a temp in its format
fiOriginal = New System.IO.FileInfo(strOriginalName)
Using pckSrc As New ExcelPackage(fiOriginal)
pckSrc.SaveAs(fiTemp)
End Using
Rem Process the temp or replace the original and see EPPLUS happy.
fiOriginal = New System.IO.FileInfo(strTempName)
Using pckSrc As New ExcelPackage(fiOriginal)
Dim wBookSrc As ExcelWorkbook = pckSrc.Workbook
Dim wkShtSrc As ExcelWorksheet = wBookSrc.Worksheets(0)
End Using
언급URL : https://stackoverflow.com/questions/29775107/worksheet-position-out-of-range-connection-closed-when-using-epplus
'source' 카테고리의 다른 글
쿼리 후 쿼리 집합을 필터링할 수 있습니까? 장고 (0) | 2023.10.28 |
---|---|
Jquery Ajax - 막대한 문자열 값 게시 (0) | 2023.10.28 |
ng-selected는 어떻게 작동합니까? (0) | 2023.10.28 |
블록 댓글 작성에 #if 0을 사용하는 이유는 무엇입니까? (0) | 2023.10.23 |
JSON RESTful 서비스를 C/C++에서 구현하는 방법 (0) | 2023.10.23 |