apache---poi讀取和建立excel檔案
1、首先準備一些poi的jar包
2.下面粘一個自己寫的例項
@RequestMapping("/getDetailExcel")
public void getALlDetail(HttpServletRequest req,HttpServletResponse resp){
List<DetailRecord> resultList = recordService.getDetail(); //待匯出excel的資料列表
// 建立Excel文件(宣告一個工作簿)
HSSFWorkbook hwb = new HSSFWorkbook();
int CountColumnNum =6; //xls.size(); //定義excel表的總列數
// sheet 對應一個工作頁,並加以命名
HSSFSheet sheet = hwb.createSheet("歷史查詢統計表");
//生成一個樣式(可有可無)
HSSFCellStyle
style = wb.createCellStyle();
//樣式字型居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER)
//建立第一行(也可以稱為表頭)
HSSFRowfirstrow=
sheet.createRow(
0
);
//下面是給該表頭每列的標識(名字)
String[] names = new String[CountColumnNum];
names[0] = "序號";
names[1] = "企業名稱";
names[2] = "納稅人識別號";
names[3] = "查詢時間";
names[4] = "報告編號";
names[5] = "歷史報告";
for (int j = 0; j < CountColumnNum; j++) {
firstcell[j] = firstrow.createCell(j);
firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
}
//對待匯出的資料進行遍歷並向表裡新增資料
for (int i = 0; i <resultList.size(); i++) {
DetailRecord record = new DetailRecord();
record = resultList.get(i);
// 建立一行
HSSFRow row = sheet.createRow(i+1); //其中i+1是從表頭下面一行開始新增資料
//開始在每一行開始填充資料
for(int col=0;i<CountColumnNum;col++){
HSSFCell id = row.createCell(0);
id.setCellValue(record.getId());
HSSFCell name = row.createCell(1);
name.setCellValue(record.getQymc());
HSSFCell yxsmc = row.createCell(2);
yxsmc.setCellValue(record.getJgdm());
HSSFCell kcm = row.createCell(3);
kcm.setCellValue(record.getSeltime());
HSSFCell sd = row.createCell(4);
sd.setCellValue(record.getBgbh());
HSSFCell address = row.createCell(5);
address.setCellValue(record.getAddress());
} sheet.autoSizeColumn((short)0); //調整第一列寬度
sheet.setColumnWidth(1, qymcSize*2*200); //對於中文欄位,要進行特殊調整
// sheet.autoSizeColumn((short)1); //調整第二列寬度
sheet.autoSizeColumn((short)2); //調整第三列寬度
sheet.autoSizeColumn((short)3); //調整第四列寬度
sheet.autoSizeColumn((short)4); //調整第四列寬度
// 建立檔案輸出流,準備輸出電子表格(以下載的形式,如果想要下載到本地的盤,則在建立檔案時將路徑改變即可)
try{
String filename = "歷史查詢明細表.xls"; //設定下載時客戶端Excel的名稱
filename = ExcelUtil.encodeFilename(filename, req);
//設定響應頭,瀏覽器就知道以什麼檔案格式進行下載
resp.setContentType("application/vnd.ms-excel");
resp.setHeader("Content-disposition", "attachment;filename=" + filename);
OutputStream ouputStream = resp.getOutputStream();
hwb.write(ouputStream);
ouputStream.close();
System.out.println("資料庫匯出成功");
}catch(Exception e){
e.printStackTrace();
}
}
3.合併單元格及自適應寬度調整:
POI是apache提供的一個讀寫Excel文件的開源元件,在操作excel時常要合併單元格,合併單元格的方法是:
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2));
自適應列寬度(適合於英文字元欄位):
sheet.autoSizeColumn(1);
sheet.autoSizeColumn(1, true);
這兩種方式都是自適應列寬度,但是注意這個方法在後邊的版本才提供,poi的版本不要太老。 注意:第一個方法在合併單元格的的單元格並不好使,必須用第二個方法(很適合於解決中文欄位)
sheet.setColumnWidth(m, “列名”.getBytes().length*2*256);
這個方法是計算字串的長度,以便設定列寬,該方法在解決中文的問題上比較好,前面兩種方法對中文不好好用。。。。
還有在自適應寬度的時候,有時候遇到單元格是公式單元格,自適應不起作用,那是因為單元格存的是公式,並不是真正的資料,解決方法:
HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook());
CellValue cell71Val = evaluator.evaluate(cell71);
cell71.setCellValue(cell71Val.getNumberValue());
將格式化後的資料再次set進去,就是真正的值了。
二:把excel表匯出:
相關文章
- python讀取和生成excel檔案PythonExcel
- WinForm讀取Excel檔案ORMExcel
- 前端讀取excel檔案前端Excel
- PHPExcel讀取excel檔案示例PHPExcel
- python檔案建立、讀取和寫入Python
- 讀取本地Excel檔案生成echartsExcelEcharts
- 【python】建立,讀取檔案Python
- 建立與讀取.ini檔案
- JavaPoi建立與讀取ExcelJavaExcel
- nodejs 讀取excel檔案,並去重NodeJSExcel
- 使用openpyxl庫讀取Excel檔案資料Excel
- Maatwebsite\Excel 讀取帶公式的excel檔案得到值呢?WebExcel公式
- php讀取excel檔案資料的匯入和匯出PHPExcel
- python讀取檔案——python讀取和儲存mat檔案Python
- Pandas之EXCEL資料讀取/儲存/檔案分割/檔案合併Excel
- js如何讀取excel檔案,繪製echarts圖形。JSExcelEcharts
- 基礎補充:使用xlrd模組讀取excel檔案Excel
- java 讀取excel 檔案 Unable to recognize OLE stream 錯誤JavaExcel
- PB讀取Excel檔案內容的方法(轉帖)Excel
- python-geopandas讀取、建立shapefile檔案Python
- 使用python的netCDF4庫讀取.nc檔案 和 建立.nc檔案Python
- Java 檔案處理完全指南:建立、讀取、寫入和刪除檔案詳細解析Java
- csv和excel讀取和下載Excel
- C#讀取文字檔案和寫文字檔案C#
- C# 讀取EXCEL檔案的三種經典方法C#Excel
- EasyExcel庫來讀取指定Excel檔案中的資料Excel
- 讀取和儲存Excel表Excel
- Pandas 基礎 (4) - 讀 / 寫 Excel 和 CSV 檔案Excel
- Python讀取大量Excel檔案並跨檔案批次計算平均值PythonExcel
- python讀取兩個excel資料檔案輸出整理好以後的excel資料檔案PythonExcel
- QDomDocument 讀取和編輯xml檔案XML
- java mysql儲存和讀取檔案JavaMySql
- csv檔案的寫入和讀取
- python讀寫excel檔案PythonExcel
- EXCEL不可讀怎麼辦,修復EXCEL檔案不可讀Excel
- 基於.NET的程式讀取Excel檔案的解決方案Excel
- 解析xlsx檔案---Java讀取Excel2007JavaExcel
- Java 讀取檔案Java