如何使用Apache POI在Microsoft Excel電子表格上執行不同的功能?使用Apache POI讀取/寫入不同的Microsoft Office文件格式
我試圖生成和更新Excel文件從我的Spring MVC應用程序(從數據庫數據)..
感謝
如何使用Apache POI在Microsoft Excel電子表格上執行不同的功能?使用Apache POI讀取/寫入不同的Microsoft Office文件格式
我試圖生成和更新Excel文件從我的Spring MVC應用程序(從數據庫數據)..
感謝
包括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();
我們在上面的代碼片段中使用的類,HSSFWorkbook和HSSFSheet作品.xls格式。爲了使用.xlsx,請使用XSSFWorkbook和XSSFSheet類。
到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
對於任何細胞或加入式操作,就可以使用如下因素:
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);