maven導入依賴jar包:java
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.6</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.6</version> </dependency>
java代碼:apache
import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Demo { public static void main(String[] args) { // 文件內容 List<Object[]> rows = new ArrayList<Object[]>(); rows.add(new String[] { "編號", "姓名", "成績" }); rows.add(new Object[] { 1001, "張三", 87.5F }); rows.add(new Object[] { 1002, "李四", 99.5F }); rows.add(new Object[] { 1003, "王五", null }); rows.add(new Object[] { 1004, "小六", 59F }); // 文件路徑 String folderPath = "E:\\tmp"; // 文件名稱 String fileName = "學生分數"; // 生成文件 new Demo().createExcelFile(rows, folderPath, fileName); } /** * 根據[文件內容&文件路徑&文件名稱],生成一個excel文件 */ private void createExcelFile(List<Object[]> rows, String folderPath, String fileName) { try { // 建立一個Workbook XSSFWorkbook wb = new XSSFWorkbook(); // 建立一個Sheet XSSFSheet sheet = wb.createSheet(fileName); // 樣式1:設置列寬 sheet.setColumnWidth(0, 2000); // 第一列的寬度爲2000 sheet.setColumnWidth(1, 3000); // 第二列的寬度爲3000 // 樣式1:設置單元格背景 CellStyle titleStyle = wb.createCellStyle(); titleStyle.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex()); titleStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); // 樣式1:設置單元格邊框 titleStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); // 下邊框 titleStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);// 左邊框 titleStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);// 上邊框 titleStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);// 右邊框 // 樣式1:設置單元格字體 Font font = wb.createFont(); // font.setColor((short) 42); // 設置字體顏色 font.setColor(HSSFColor.GREEN.index); // XSSFColor中未找到顏色和short數值的映射,使用HSSFColor來定位顏色的short值 font.setFontName("黑體"); // 設置字體 font.setFontHeightInPoints((short) 12);// 設置字體大小 font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 粗體顯示 titleStyle.setFont(font); // 樣式1:設置單元格居中 titleStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 樣式2:設置單元格居中 CellStyle contentStyle = wb.createCellStyle(); contentStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 遍歷輸出每行 for (int i = 0; i < rows.size(); i++) { // 建立一個row XSSFRow row = sheet.createRow(i); // 每一行的數據 Object[] rowData = rows.get(i); // 遍歷生成每一個單元格 for (int j = 0; j < rowData.length; j++) { // 建立一個cell XSSFCell cell = row.createCell(j); // 樣式:設置單元格樣式 if (i == 0) { cell.setCellStyle(titleStyle);// 使用樣式1 } else { cell.setCellStyle(contentStyle);// 使用樣式2 } // 若是爲空,就不作設值處理 if (null == rowData[j]) { continue; } // 設值處理:假設只有四種類型的數據,若是還有其餘類型,根據須要,作格式轉換 // String類型數值 if (rowData[j].getClass() == String.class) { cell.setCellValue((String) rowData[j]); } // double類型數值 else if (rowData[j].getClass() == double.class || rowData[j].getClass() == Double.class) { cell.setCellValue((Double) rowData[j]); } // float類型數值 else if (rowData[j].getClass() == float.class || rowData[j].getClass() == Float.class) { cell.setCellValue((Float) rowData[j]); } // integer類型數值 else if (rowData[j].getClass() == int.class || rowData[j].getClass() == Integer.class) { cell.setCellValue((Integer) rowData[j]); } } } // 文件路徑 String filePath = folderPath + File.separator + fileName + ".xls";// 含文件名的全路徑,若是是2007及之後的版本,後綴可用.xlsx,向前兼容 File file = new File(filePath); // 若是父目錄不存在,建立父目錄 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } // 若是已存在,刪除舊文件 if (file.exists()) { file.delete(); } // 將excel內容寫入到文件當中 file.createNewFile(); FileOutputStream fileOut = new FileOutputStream(file); wb.write(fileOut); fileOut.close(); } catch (Exception e) { e.printStackTrace(); } } }