Java使用poi将list<Map>导出为表格
生活随笔
收集整理的這篇文章主要介紹了
Java使用poi将list<Map>导出为表格
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我是單個Java工程,網上許多教程是適用于spring框架的。
首先導入poi的包,下載地址如下http://poi.apache.org/download.html
(注:若后期出現缺少org/apache/xmlbeans/XmlObject,下載地址為:http://xmlbeans.apache.org? )
導入包后(導入看前面的教程里有提到過),在util下新建文件插入下面的程序就可以啦!
import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.*; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*;/*** @author fya* @date 2021/1/5*/ public class ExcelUtils {private static ExcelUtils instance = new ExcelUtils();private ExcelUtils(){}public static ExcelUtils getInstance(){return instance;}/*** 將 List<Map<String,Object>> 類型的數據導出為 Excel* 默認 Excel 文件的輸出路徑為 項目根目錄下* 文件名為 filename + 時間戳 + .xlsx** @param mapList 數據源(通常為數據庫查詢數據)* @param filename 文件名前綴, 實際文件名后會加上日期* @param title 表格首行標題* @return 文件輸出路徑*/public String createExcel(List<Map<String, Object>> mapList,String filename, String title) {//獲取數據源的 key, 用于獲取列數及設置標題Map<String, Object> map = mapList.get(0);Set<String> stringSet = map.keySet();ArrayList<String> headList = new ArrayList<>(stringSet);//定義一個新的工作簿XSSFWorkbook wb = new XSSFWorkbook();//創建一個Sheet頁XSSFSheet sheet = wb.createSheet(title);//設置行高sheet.setDefaultRowHeight((short) (2 * 256));//為有數據的每列設置列寬for (int i = 0; i < headList.size(); i++) {sheet.setColumnWidth(i, 8000);}//設置單元格字體樣式XSSFFont font = wb.createFont();font.setFontName("等線");font.setFontHeightInPoints((short) 16);//在sheet里創建第一行,并設置單元格內容為 title (標題)XSSFRow titleRow = sheet.createRow(0);XSSFCell titleCell = titleRow.createCell(0);titleCell.setCellValue(title);//合并單元格CellRangeAddress構造參數依次表示起始行,截至行,起始列, 截至列sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headList.size() - 1));// 創建單元格文字居中樣式并設置標題單元格居中XSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setAlignment(HorizontalAlignment.CENTER);titleCell.setCellStyle(cellStyle);//獲得表格第二行XSSFRow row = sheet.createRow(1);//根據數據源信息給第二行每一列設置標題for (int i = 0; i < headList.size(); i++) {XSSFCell cell = row.createCell(i);cell.setCellValue(headList.get(i));}XSSFRow rows;XSSFCell cells;//循環拿到的數據給所有行每一列設置對應的值for (int i = 0; i < mapList.size(); i++) {//在這個sheet頁里創建一行rows = sheet.createRow(i + 2);//給該行數據賦值for (int j = 0; j < headList.size(); j++) {String value = mapList.get(i).get(headList.get(j)).toString();cells = rows.createCell(j);cells.setCellValue(value);}}Date date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");// 使用項目根目錄, 文件名加上時間戳String path = System.getProperty("user.dir") + "\\" + filename + dateFormat.format(date) + ".xlsx";System.out.println("Excel文件輸出路徑: "+path);try {File file = new File(path);FileOutputStream fileOutputStream = new FileOutputStream(file);wb.write(fileOutputStream);wb.close();fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}return path;}}在自己的方法里進行調用使用:
ExcelUtils.getInstance().createExcel(mapArrayList,"文件名","測試數據");總結
以上是生活随笔為你收集整理的Java使用poi将list<Map>导出为表格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Albert Einstein—一个真正
- 下一篇: 约素