C# NPOI 플러그인을 사용하는 HSSFWorkBook, 일반적인 구덩이

4440 단어
HSSFWorkBook 클래스를 실례화할 때 자주 발생하는 문제: HSSFWorkBook.isReadOnly.
  HSSFWorkBook.isReadOnly, 이상한 것 같지만 Excel 템플릿을 정상적으로 내보내는 데 영향을 주지 않습니다. 그러나 주의해야 할 것은 Excel 템플릿의 접두사 이름입니다.하면, 만약, 만약...xlsx, 그러면 파일 열기 오류가 발생합니다. 사실은 Excel 버전의 호환성 문제입니다.
때로는 HSSFRow sheetRow = (HSSFRow) sheet.CreateRow(index);새 row를 만들고 sheetRow를 사용합니다.CreateCell(2).SetCellValue(new HSSFRichTextString);모든 셀에 값을 부여할 때 문제가 발생할 수 있습니다.
for (int i=0; i)
            {
                HSSFRow sheetRow = (HSSFRow)sheet.CreateRow(4+i);
                sheetRow.CreateCell(0).SetCellValue(new HSSFRichTextString(startDate.AddDays(i).ToString("yyyy-MM-dd")));// :2018-01-01
                sheetRow.CreateCell(1).SetCellValue(new HSSFRichTextString(startDate.AddDays(i).ToString("dddd")));// 、 ......
                // "", , cell null, ,Cells user 
                sheetRow.CreateCell(2).SetCellValue(new HSSFRichTextString(""));
                sheetRow.CreateCell(3).SetCellValue(new HSSFRichTextString(""));
                sheetRow.CreateCell(4).SetCellValue(new HSSFRichTextString(""));
            }

코드에 3개의 셀의 값이 ""로 설정되어 있습니다. 만약 설정하지 않는다면 이 3개의 셀은 근본적으로null입니다. 게다가 사용자가 이 템플릿을 다운로드하면 어떤 셀은 값을 입력하고 어떤 셀은 입력하지 않습니다. 예를 들어
test1
test2
test3
test4
test5
 
test2
 
test4
 
 
 
test3
 
 
test1
 
 
 
test5
 
 
 
 
 
그러면 데이터를 읽을 때 첫 번째 줄의 Cells.Count==5, 두 번째, 네 번째 줄의 Cells.Count==2, 세 번째 줄의 Cells.Count==1, 다섯 번째 줄의 Cells.Count==0.코드에 빈 문자열을 설정하면 후속 사용자가 새로운 데이터를 입력했든 안 했든 관련 위치의 값을 가져올 수 있고 out of range의 이상이 발생하지 않습니다.
GetCell(index) 메서드를 사용하여 위치를 정확하게 찾습니다.
때때로 업로드된 excel 표의 값을 클라이언트에 표시하는 동시에 몇 개의 cell 값이 비어 있는지, 아니면null에 따라 제거해야 합니다. 만약에 정량적이지 않은 값이null인 Cell 개수가 나타나면 분명히 Cells [index]로는 안 됩니다. 위에서 언급한 Cells입니다.Count는null의 셀 칸을 통계하지 않습니다. 예를 들어 위의 두 번째 줄에 대해cells[0]의 값이test2일 수 있습니다. 어떻게 정확하게 셀의 위치를 찾을 수 있습니까?NPOI는 이에 대응하기 위해 셀 칸을 정확하게 찾을 수 있는 방법을 제공했다. 바로 GetCell(index)이다.그러면 GetCell(index)을 통해 상응하는 위치를 정확하게 찾을 수 있고 비어 있는지, null인지 판단한 다음에 선별, 값 부여 등 조작을 할 수 있다.
StringCellValue 메서드를 사용하면 일반적으로 셀 값을 추출하는 데 사용될 수 있습니다.
 
string resGp = sheet.GetRow(0).Cells[1].StringCellValue;
// ,sheet.GetRow(0).Cells[1] ,
// , ,
// StringCellValue 
// StringCellValue, , 
string resGp = sheet.GetRow(0).Cells[1];
// , , , ToString()
string resGp = sheet.GetRow(0).Cells[1].ToString();

 
다음으로 전송:https://www.cnblogs.com/SysoCjs/p/9789791.html

좋은 웹페이지 즐겨찾기