相信在專案中,對資料進行動態匯出這是一個比較常見的功能。對於資料匯出我們可以使用Apache-POI這個框架來幫我來進行Excel的寫入與讀取。下面就用程式碼來實現Apache POI寫入與讀取excel檔案。
1、Apache POI基本概念
下面將簡單的描述一下當進行Excel讀取與寫入的時候要使用到的基本類。
- HSSF 為字首的類名錶示操作的是Microsoft Excel 2003檔案。
- XSSF 為字首的類名錶示操作的是Microsoft Excel 2007或以後的版本
- XSSFWorkbook 和 HSSFWorkbook表示一個Excel的Workbook.
- HSSFSheet 和 XSSFSheet 表示一個Excel的Worksheet.
- Row 表示一個Excel行
- Cell 表示當前Row中一個Cell.
2、下載Apache POI
在專案中是使用Maven來管理Jar依賴的,所以在Pom.xml新增以下依賴:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
複製程式碼
3、寫入一個Excel檔案
下面的程式碼將會簡單的展示使用Apache POI寫入一個Excel檔案。資料將會寫入到XSSFWorkbook物件中。
ApachePOIExcelWrite.java
複製程式碼
package com.weimob.o2o.carl.poi;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ApachePOIExcelWrite {
private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
public static void main(String[] args) {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Data types in Java");
Object[][] dataTypes = {
{"DataType", "Type", "Size(in bytes)"},
{"int", "Primitive", 2},
{"float", "Primitive", 4},
{"double", "Primitive", 8},
{"char", "Primitive", 1},
{"String", "Non-Primitive", "No fixed size"}
};
int rowNum = 0;
System.out.println("Creating excel");
for(Object[] dataType : dataTypes){
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for(Object field : dataType){
Cell cell = row.createCell(colNum++);
if(field instanceof String){
cell.setCellValue((String) field);
} else if (field instanceof Integer){
cell.setCellValue((Integer) field);
}
}
}
try {
FileOutputStream outputStream = new FileOutputStream(FILE_NAME);
workbook.write(outputStream);
workbook.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Done");
}
}
複製程式碼
你將會在你專案所在的磁碟中的tmp資料夾中得到以下的excel檔案:
4、讀取一個Excel檔案
下面的程式碼展示如何使用Apache POI讀取Excel檔案。getCellTypeEnum方法在 3.15 中不推薦使用並且會在 4.0 版本中將會改名為:getCellType.
ApachePOIExcelRead.java
複製程式碼
package com.weimob.o2o.carl.poi;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
public class ApachePOIExcelRead {
private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
public static void main(String[] args) {
try {
FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
Workbook workbook = new XSSFWorkbook(excelFile);
Sheet dataTypeSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = dataTypeSheet.iterator();
while(iterator.hasNext()){
Row currentRow = iterator.next();
Iterator<Cell> cellIterator = currentRow.iterator();
while(cellIterator.hasNext()){
Cell currentCell = cellIterator.next();
//getCellTypeEnum shown as deprecated for version 3.15
//getCellTypeEnum ill be renamed to getCellType starting from version 4.0
if(currentCell.getCellTypeEnum() == CellType.STRING){
System.out.print(currentCell.getStringCellValue() + "--");
} else if(currentCell.getCellTypeEnum() == CellType.NUMERIC){
System.out.print(currentCell.getNumericCellValue() + "--");
}
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
複製程式碼
你的控制檯將會輸出以下程式碼:
為什麼某些人會一直比你優秀,是因為他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜!
合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
To-陌霖Java架構
複製程式碼
分享網際網路最新文章 關注網際網路最新發展