使用的依賴:Apache提供的poi包 首先導入依賴 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency> 核心 ...
使用的依賴:Apache提供的poi包
首先導入依賴
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
核心實現
//創建一個工作簿,也就是Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//創建一個工作表
HSSFSheet sheet = wb.createSheet();
//創建一行
HSSFRow row = sheet.createRow(0);
//創建這一行的第一個單元格
HSSFCell cell = row.createCell(0);
//設置單元格的內容
cell.setCellValue("你好!");
//輸出文件
//創建位元組輸出流
File file = new File("D://excel.xls");
FileOutputStream fos = new FileOutputStream(file);
wb.write(fos);
fos.flush();
fos.close();
這個工作表指的是這個
運行結果
現在你完成了往一個單元格裡寫數據,如果想要做成一個表格,那就需要迴圈
例如現在有一個需求:現在要統計學生的簽到情況,需要把學生的簽到記錄導出到Excel表中
這裡我們用假數據模擬,首先是實體類
public class CheckExcel {
private String name;//姓名
private Integer number;//學號
private Date checkTime;//簽到時間
}
主體程式
public class ToExcel {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void getExcel(List<CheckExcel> object) {
//創建一個工作簿,也就是Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//創建一個工作表
HSSFSheet sheet = wb.createSheet();
//第一行,標題
HSSFRow row0 = sheet.createRow(0);
HSSFCell cell0 = row0.createCell(0);
cell0.setCellValue(object.get(0).getCheckName() + "簽到統計表");
//第二行,表頭
HSSFRow row1 = sheet.createRow(1);
row1.setRowStyle(style);
row1.createCell(0).setCellValue("姓名");
row1.createCell(1).setCellValue("學號");
row1.createCell(2).setCellValue("簽到時間");
//表中數據
int rowInt = 2;
for (CheckExcel obj : object) {
HSSFRow row = sheet.createRow(rowInt++);
int cellInt = 0;
row.createCell(cellInt++).setCellValue(obj.getName());
row.createCell(cellInt++).setCellValue(obj.getNumber());
row.createCell(cellInt).setCellValue(sdf.format(obj.getCheckTime()));//將日期轉換成字元串,要不然存的是一個時間戳
}
try {
//輸出文件
//創建位元組輸出流
File file = new File("D://excel.xls");
FileOutputStream fos = new FileOutputStream(file);
wb.write(fos);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("ToExcel.getExcel");
System.out.println("IO出異常了");
}
}
public static void main(String[] args) {
List<CheckExcel> stu = new ArrayList<>();
stu.add(new CheckExcel("學生1", 1001, "高等數學", new Date()));
stu.add(new CheckExcel("學生2", 1002, "高等數學", new Date()));
stu.add(new CheckExcel("學生3", 1003, "高等數學", new Date()));
getExcel(stu);
}
}
運行結果
但是細心的你會發現這個表格沒有居中,看起來樣式很不好看,這就需要用到HSSFCellStyle
設置表格的樣式,具體樣式設置有很多就不給大家一一演示了,這裡放一個鏈接供大家去參考
https://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel/HSSFCellStyle.html
這是官方提供的API,所有方法都在裡面。