2016-09-27 67 views

回答

1

包括Apache的POI jar文件

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.15</version> 
</dependency> 

讀取excel文件

import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
//.. 
FileInputStream file = new FileInputStream(new File("C:\\test.xls")); 

//Get the workbook instance for XLS file 
HSSFWorkbook workbook = new HSSFWorkbook(file); 

//Get first sheet from the workbook 
HSSFSheet sheet = workbook.getSheetAt(0); 

//Get iterator to all the rows in current sheet 
Iterator<Row> rowIterator = sheet.iterator(); 

//Get iterator to all cells of current row 
Iterator<Cell> cellIterator = row.cellIterator(); 

我們在上面的代碼片段中使用的類,HSSFWorkbookHSSFSheet作品.xls格式。爲了使用.xlsx,請使用XSSFWorkbookXSSFSheet類。

到HSSF類似,POI有其他的文件格式也不同的前綴:

HSSF(可怕的電子表格格式) - 讀取和寫入的Microsoft Excel(XLS)格式的文件。

XSSF(XML電子表格格式) - 讀取和寫入Office Open XML(XLSX)格式文件。

HPSF(可怕屬性集格式) - 從Microsoft Office文件讀取「文檔摘要」格式。

HWPF(可怕的字處理器格式) - 旨在讀寫Microsoft Word 97中(DOC)格式的文件。

HSLF(可怕的幻燈片佈局格式) - Microsoft PowerPoint文件的純Java實現。

HDGF(圖可怕格式) - 爲Microsoft Visio二進制文件的初始純Java實現。

HPBF(Horrible PuBlisher格式) - Microsoft Publisher文件的純Java實現。

HSMF(可怕的愚蠢的郵件格式) - 一個純粹的Microsoft Outlook MSG文件的Java實現。

DDF(Dreadful Drawing Format) - 解碼Microsoft Office圖形格式的包。

創建新的Excel文件

import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
//.. 
HSSFWorkbook workbook = new HSSFWorkbook(); 
HSSFSheet sheet = workbook.createSheet("FuSsA sheet"); 
//Create a new row in current sheet 
Row row = sheet.createRow(0); 
//Create a new cell in current row 
Cell cell = row.createCell(0); 
//Set value to new value 
cell.setCellValue("Slim Shady"); 
    try { 
     FileOutputStream out = 
       new FileOutputStream(new File("C:\\new.xls")); 
     workbook.write(out); 
     out.close(); 
     System.out.println("Excel written successfully.."); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

更新現有的Excel文件

try { 
      FileInputStream file = new FileInputStream(new File("C:\\update.xls")); 

      HSSFWorkbook workbook = new HSSFWorkbook(file); 
      HSSFSheet sheet = workbook.getSheetAt(0); 
      Cell cell = null; 

      //Update the value of cell 
      cell = sheet.getRow(1).getCell(2); 
      cell.setCellValue(cell.getNumericCellValue() * 2); 
      cell = sheet.getRow(2).getCell(2); 
      cell.setCellValue(cell.getNumericCellValue() * 2); 
      cell = sheet.getRow(3).getCell(2); 
      cell.setCellValue(cell.getNumericCellValue() * 2); 

      file.close(); 

      FileOutputStream outFile =new FileOutputStream(new File("C:\\update.xls")); 
      workbook.write(outFile); 
      outFile.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

有關詳細信息,添加公式和添加荷蘭國際集團的樣式到細胞可以檢查此鏈接:Read/Write Excel file in Java using Apache POI

0

對於任何細胞或加入式操作,就可以使用如下因素:

HSSFWorkbook workbook = new HSSFWorkbook(); 
     HSSFSheet sheet = workbook.createSheet("Calculate Simple Interest"); 

     Row header = sheet.createRow(0); 
     header.createCell(0).setCellValue("Pricipal Amount (P)"); 
     header.createCell(1).setCellValue("Rate of Interest (r)"); 
     header.createCell(2).setCellValue("Tenure (t)"); 
     header.createCell(3).setCellValue("Interest (P r t)"); 

     Row dataRow = sheet.createRow(1); 
     dataRow.createCell(0).setCellValue(14500d); 
     dataRow.createCell(1).setCellValue(9.25); 
     dataRow.createCell(2).setCellValue(3d); 
     dataRow.createCell(3).setCellFormula("A2*B2*C2"); 

     try { 
      FileOutputStream out = 
        new FileOutputStream(new File("C:\\formula.xls")); 
      workbook.write(out); 
      out.close(); 
      System.out.println("Excel written successfully.."); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

對於添加樣式到細胞,

you can use: cell.setCellStyle(style); 

要添加背景到單元格,您可以使用以下內容:

cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); 
相關問題