2017-07-04 68 views
2

私はExcelのテンプレートシートを読み込むプログラムを書いています。最初の列は隠されていました。さて、私はプログラムでExcelの列を非表示にするコードを持っています(A1からの列の開始)。POIを使用して、水平スクロールバーをシートの1列左に移動する方法はありますか?

私はApache POI 3.16バージョンを使用しています。

ファイルを開くと、B1列から私が表示される代わりに、A1からの列が表示されます。 XLSのコードの下に記述すると、正しく動作しますが、XLSX形式では機能しませんでした。

sheet.showInPane(0, 0); 

私は手動で私の最初の列を表示するために、水平スクロールバーを移動する必要があります。これをプログラムで実行して、XLSX形式の最初の列に自動スクロールする必要がありますか?

ここに私のフルコードです。

public Workbook readWorkBookAndWriteErrors(String bufId,String inputFile, String ext) throws Exception { 
     Workbook workBook =null; 
     Sheet sheet = null; 
     if(GlobalVariables.EXCEL_FORMAT_XLS.equalsIgnoreCase(ext)){ 
      // Get the workbook instance for XLS file 
      workBook = new HSSFWorkbook(new FileInputStream(inputFile)); 
     }else{ 
      // Get the workbook instance for XLSX file 
      workBook = new XSSFWorkbook(new FileInputStream(inputFile)); 
     } 
     sheet = workBook.getSheetAt(0); 
     Row row = null; 
     if(sheet.isColumnHidden(0)){ 
      sheet.setColumnHidden(0, false); 
      sheet.setActiveCell(new CellAddress("A1")); 
      sheet.showInPane(0, 0); 
      sheet.createFreezePane(0, 1); 

      Iterator<Row> rowIterator = sheet.iterator(); 
       int rowIndex = 1; 
       while (rowIterator.hasNext()) { 
        row = rowIterator.next(); 
        if(rowIndex == 1){ 
         rowIndex++; 
         continue; 
        } 
        Cell cell = row.createCell(0); 
        cell.setCellValue("error message"); 
        rowIndex++; 
       } 
     } 
     return workBook; 
    } 
+1

は、それがために働いていますhttps://stackoverflow.com/questions/34974778/set-top-row-and-left-column-for-an-xssfsheet/ –

+0

おかげ@Axelリヒター –

答えて

2

ここに私の質問に対する答えがあります。このSource

public Workbook readWorkBookAndWriteErrors(String bufId,String inputFile, String ext) throws Exception { 
     Workbook workBook =null; 
     Sheet sheet = null; 
     if(GlobalVariables.EXCEL_FORMAT_XLS.equalsIgnoreCase(ext)){ 
      // Get the workbook instance for XLS file 
      workBook = new HSSFWorkbook(new FileInputStream(inputFile)); 
     }else{ 
      // Get the workbook instance for XLSX file 
      workBook = new XSSFWorkbook(new FileInputStream(inputFile)); 
     } 
     sheet = workBook.getSheetAt(0); 
     Row row = null; 
     if(sheet.isColumnHidden(0)){ 
      sheet.setColumnHidden(0, false); 

      if(sheet instanceof XSSFSheet){ 
       CTWorksheet ctWorksheet = null; 
       CTSheetViews ctSheetViews = null; 
       CTSheetView ctSheetView = null; 
       XSSFSheet tempSheet = (XSSFSheet) sheet; 
       // First step is to get at the CTWorksheet bean underlying the worksheet. 
       ctWorksheet = tempSheet.getCTWorksheet(); 
       // From the CTWorksheet, get at the sheet views. 
       ctSheetViews = ctWorksheet.getSheetViews(); 
       // Grab a single sheet view from that array 
       ctSheetView = ctSheetViews.getSheetViewArray(ctSheetViews.sizeOfSheetViewArray() - 1); 
       // Se the address of the top left hand cell. 
       ctSheetView.setTopLeftCell("A1"); 
      }else{ 
       sheet.setActiveCell(new CellAddress("A1")); 
       sheet.showInPane(0, 0); 
      } 


      Iterator<Row> rowIterator = sheet.iterator(); 
       int rowIndex = 1; 
       while (rowIterator.hasNext()) { 
        row = rowIterator.next(); 
        if(rowIndex == 1){ 
         rowIndex++; 
         continue; 
        } 
        Cell cell = row.createCell(0); 
        cell.setCellValue("error message"); 
        rowIndex++; 
       } 
     } 
     return workBook; 
    } 
+1

を参照してください参照してください私。 – jalpa

関連する問題