2016-06-01 3 views
1

Excel 파일을 만들고 Hello 같이 (0,0) [행, 셀]에 새 값을 삽입했습니다. 두 번째로 동일한 Excel 파일, 동일한 시트를 연 다음 다른 (0,0) 셀을 다른 문자열 값으로 업데이트했습니다.NPOI를 사용하여 Excel 파일의 기존 셀 값을 업데이트하십시오.

코드는 오류없이 성공적으로 실행되지만 파일이 손상되어 열리지 않습니다.

번째 값은 cell.SetCellValue (secondValue)을 설정 한 후 디버그 모드

namespace PractiseProject 
{ 
    public static class ExcelNPOI 
    { 
     static IWorkbook workbook; 
     static ISheet sheet; 
     static IRow row; 
     static ICell cell; 
     static string file = "C:/Users/MSTEMP/Documents/Files/Test.xlsx"; 
     static string sheetName = "Testcase"; 

     public static void createExcel() 
     { 
      string firstValue = "Hello"; 
      if (!File.Exists(file)) 
      { 
       using (FileStream str = new FileStream(file, FileMode.Create, FileAccess.Write)) 
       { 
        workbook = new XSSFWorkbook(); 
        sheet = workbook.CreateSheet(sheetName); 
        row = sheet.CreateRow(0); 
        cell = row.CreateCell(0); 
        cell.SetCellValue(firstValue); 
        workbook.Write(str); 
        str.Close(); 
       } 
      } 
      else 
      { 
       using (FileStream rstr = new FileStream(file, FileMode.Open, FileAccess.Read)) 
       { 
        workbook = new XSSFWorkbook(rstr); 
        sheet = workbook.GetSheet(sheetName); 

        using (FileStream wstr = new FileStream(file, FileMode.Open, FileAccess.ReadWrite)) 
        { 
         string secondValue = "changes"; 

         row = sheet.GetRow(0); 
         cell = row.GetCell(0); 
         cell.SetCellValue(secondValue); 
         Debug.Print(cell.ToString()); 
         workbook.Write(wstr); 
         wstr.Close(); 
        } 
        rstr.Close(); 
       } 
      } 
     } 
    } 
} 

, 코드;을 통해 값을 볼 수 있습니다. Debug.Print (cell.ToString());이고 값이 콘솔에 인쇄됩니다. 그러나 통합 문서에 쓸 때 파일이 손상됩니다. 손을 내밀어 안내하십시오. 내가 두 번째 문을 사용하여 다른 부분에서 실수를

답변

0

..

하기 전에 : 이제

using (FileStream wstr = new FileStream(file, FileMode.Open, FileAccess.ReadWrite)) 

: 나는 파일 모드 및 FileAccess 유형을 변경 한

using (FileStream wstr = new FileStream(file, FileMode.Create, FileAccess.Write)) 

및 이제는 잘 작동합니다.

관련 문제