1. 程式人生 > >Apache POI匯出excel

Apache POI匯出excel

public String exportXls(HttpServletRequest request, HttpServletResponse response) {
        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFRow row = null;
            HSSFCell cell = null;
            //建立新的sheet物件
            HSSFSheet sheet = wb.createSheet("匯出資訊");//sheet的名稱
            sheet.setColumnWidth(0, 5*256);//
設定第columnIndex+1列的列寬,單位為字元寬度的1/256 sheet.setColumnWidth(1, 30*256); sheet.setColumnWidth(2, 20*256); sheet.setColumnWidth(3, 10*256); sheet.setColumnWidth(4, 10*256); sheet.setColumnWidth(5, 10*256); sheet.setColumnWidth(6, 10*256); sheet.setColumnWidth(
7, 10*256); //標題樣式 HSSFCellStyle titleStyle = wb.createCellStyle(); titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); org.apache.poi.ss.usermodel.Font ztFont = wb.createFont(); ztFont.setItalic(
false); ztFont.setColor(org.apache.poi.ss.usermodel.Font.COLOR_NORMAL); ztFont.setFontHeightInPoints((short) 16); ztFont.setFontName("宋體"); ztFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); titleStyle.setFont(ztFont); //----------------二級標題格樣式---------------------------------- HSSFCellStyle titleStyle2 = wb.createCellStyle(); //表格樣式 titleStyle2.setAlignment(HSSFCellStyle.ALIGN_LEFT); titleStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); HSSFFont ztFont2 = wb.createFont(); ztFont2.setItalic(false); // 設定字型為斜體字 ztFont2.setColor(org.apache.poi.ss.usermodel.Font.COLOR_NORMAL); ztFont2.setFontHeightInPoints((short)11); // 將字型大小設定為18px ztFont2.setFontName("宋體"); // 字型應用到當前單元格上 titleStyle2.setFont(ztFont2); //---------------------------------------------------------- //----------------單元格樣式---------------------------------- HSSFCellStyle cellStyle = wb.createCellStyle(); //表格樣式 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下邊框 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左邊框 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框 HSSFFont cellFont = wb.createFont(); cellFont.setItalic(false); // 設定字型為斜體字 cellFont.setColor(org.apache.poi.ss.usermodel.Font.COLOR_NORMAL); cellFont.setFontHeightInPoints((short)10); // 將字型大小設定為18px cellFont.setFontName("宋體"); // 字型應用到當前單元格上 cellStyle.setFont(cellFont); cellStyle.setWrapText(true);//設定自動換行 //---------------------------------------------------------- // ----------------------建立第一行--------------- // 在sheet裡建立第一行,引數為行索引(excel的行),可以是0~65535之間的任何一個 row = sheet.createRow(0); // 建立單元格(excel的單元格,引數為列索引,可以是0~255之間的任何一個 cell = row.createCell(0); // 合併單元格CellRangeAddress構造引數依次表示 起始行,截至行,起始列, 截至列 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7)); // 設定單元格內容 cell.setCellValue("測試excel"); cell.setCellStyle(titleStyle); // ---------------------------------------------- // ------------------建立第二行()--------------------- row = sheet.createRow(1); // 建立第二行 cell = row.createCell(0); sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 1)); cell.setCellValue("入庫單號:15203"); cell.setCellStyle(titleStyle2); cell = row.createCell(2); sheet.addMergedRegion(new CellRangeAddress(1, 1, 2, 4)); cell.setCellValue("執行單號:14520"); cell.setCellStyle(titleStyle2); cell = row.createCell(5); sheet.addMergedRegion(new CellRangeAddress(1, 1, 5, 7)); String createDate = MapUtil.getRealValue(headInfo, "create_date", ""); cell.setCellValue("建立時間:2018-06-19 13:59:23"); cell.setCellStyle(titleStyle2); //---------------------建立第三行------------------------------------- row = sheet.createRow(2); cell = row.createCell(0); sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 1)); cell.setCellValue("供應商:京東"); cell.setCellStyle(titleStyle2); cell = row.createCell(2); sheet.addMergedRegion(new CellRangeAddress(2, 2, 2, 4)); cell.setCellValue("倉庫名稱:一號倉庫"); cell.setCellStyle(titleStyle2); cell = row.createCell(5); sheet.addMergedRegion(new CellRangeAddress(2, 2, 5, 7)); cell.setCellValue("總金額:23.65"); cell.setCellStyle(titleStyle2); // ------------------建立表頭start--------------------- row = sheet.createRow(3); // 建立第四行 sheet.addMergedRegion(new CellRangeAddress(3, 3, 0, 0)); cell = row.createCell(0); cell.setCellValue("序號"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 1, 1)); cell = row.createCell(1); cell.setCellValue("物料名稱"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 2, 2)); cell = row.createCell(2); cell.setCellValue("物料編號"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 3)); cell = row.createCell(3); cell.setCellValue("物料產地"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4)); cell = row.createCell(4); cell.setCellValue("入庫價格"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 4)); cell = row.createCell(5); cell.setCellValue("參考價格"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 5, 5)); cell = row.createCell(6); cell.setCellValue("需求數量"); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(3, 3, 6, 6)); cell = row.createCell(7); cell.setCellValue("總金額"); cell.setCellStyle(cellStyle);         //迴圈填充資料 int i =1; int rowNum= 3; List<Object> data = null; for (Map m : mapList) { data = new ArrayList<>(); data.add(i); data.add((String) m.get("wuliao_name")); data.add((String) m.get("wuliao_no")); data.add((String) m.get("wuliao_address")); data.add((Double) m.get("danjia")); data.add((Double) m.get("reference_price")); data.add((Integer) m.get("wuliao_count")); data.add((Double) m.get("totalmoney")); rowNum ++; //從第四行開始 row = sheet.createRow(rowNum); for (int j = 0; j < data.size(); j++) { //將資料新增到單元格中 sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, j, j)); cell = row.createCell(j); cell.setCellValue(""+data.get(j)+""); cell.setCellStyle(cellStyle); } i++; }       //新增底部合計行 row = sheet.createRow(rowNum+1); sheet.addMergedRegion(new CellRangeAddress(rowNum+1, rowNum+1, 0, 4)); cell = row.createCell(0); cell.setCellStyle(cellStyle); cell = row.createCell(1); cell.setCellStyle(cellStyle); cell = row.createCell(2); cell.setCellStyle(cellStyle); cell = row.createCell(3); cell.setCellStyle(cellStyle); cell = row.createCell(4); cell.setCellStyle(cellStyle); cell = row.createCell(5); cell.setCellStyle(cellStyle); cell = row.createCell(6); cell.setCellValue(totalNumber); cell.setCellStyle(cellStyle); cell = row.createCell(7); cell.setCellValue(new BigDecimal(totalMoney).setScale(2, RoundingMode.DOWN).toString()); cell.setCellStyle(cellStyle); OutputStream output = response.getOutputStream(); response.reset();

        response.setHeader("Content-Disposition", "filename="

                  + new String("測試匯出".getBytes("gb2312"), "iso8859-1"))+".xls";//設定檔案頭編碼方式和檔名

            response.setContentType("application/msexcel");
            wb.write(output);
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
}

相關推薦

Javaweb專案,簡單應用Apache POI匯出Excel的簡單例子

直接上程式碼: jsp: 說明:這裡使用ajax請求是會有問題的,會導致瀏覽器視窗不會彈出下載提示和選擇位址列的彈窗 //匯出 $('#btn-export').click(function () { location.href = "${pageContext.r

Apache POI匯出excel

public String exportXls(HttpServletRequest request, HttpServletResponse response) { try { HSSFWorkbook wb = new HSSFWorkbook();

apache POI匯出excel檔案 及單元格合併 、樣式的設定

客戶需要從完單物料資訊中到處excel 大概思路: 單擊某一按鈕,觸發請求至後臺,建立輸出流,匯出excel ^_^ 前臺程式碼: (此段程式碼 註釋部分存在一個問題,註釋部分的請求無效,後臺無法響應前臺請求, 引數傳過去了,後臺也接受了,但輸出流沒有輸出,木雞wh

基於Apache POI匯出(百萬級)大資料量Excel的實現

POI匯出大資料量excel (注:專案原始碼及後續更新請點選) 1、ExcelUtils類: package Utils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObje

Apache POI實現Excel檔案匯出

文章轉載地址: https://blog.csdn.net/qq_17214237/article/details/78345246 最近開發excel匯入匯出功能,使用的是Apache的POI技術 POI提供了很多對Microsoft Office的功能,本文僅僅講解POI的Excel

使用Apache POI 進行Excel報表的匯出下載(GET 請求 && POST請求)

簡介:之前專案有這樣的需求:按各種條件進行篩選資料,然後匯出Excel到本地 針對條件條件很少的情況下,使用的是GET請求的方式,直接在URL上拼接請求引數,這種形式很簡單就能匯出Excel。但是當條件很多很複雜時,就不適合使用GET請求的方式了,所以我使用了

使用apache POI解析Excel文件

sim bject 我們 如果 dialog 日期 源碼 round 清理 1. Apache POI簡介 Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程式對Microsoft Offic

Apache POI - Java Excel APIs

方式 start api文檔 面積 指定 .com book 字段名 分配 文檔來源:https://www.yiibai.com/apache_poi/ POI 什麽是Apache POI? Apache POI是一種流行的API,它允許程序員使用Java程序創建,修改和

Apache-POI 設定excel單元格樣式字型等

大概思路就是設定樣式以及字型後新增進單元格中 Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.getSheetAt(0); //建立單元格 Row row = sheet.getRow(0); if(null == row){ r

菜鳥調錯——POI匯出Excel報錯No such file or directory

場景重現 Apache POI Linux Tomcat 如上所示,當時在linux+tomcat的環境下,使用apache的poi匯出excel的時候就會報“No such file or directory”的錯誤。 錯誤資訊 java.la

POI匯出excel表格優化

package com.ywj.excel; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java

HSSFWorkbook(poi)匯出excel表格

本文與另一篇文章關聯: csv格式匯出excel報表 其中: String accountDate 入參(日期) AccountInfoEntityResp accountInfoEntityResp 匯出的xml報文內容(轉換成obj物件) xml報文解析見另一篇:x

java使用poi匯出excel例子

java匯出某個頁籤: 第一步:先在jsp新建一個匯出介面按鈕: <a id="export" class="mini-button" iconCls="icon-download" onclick="exportexcel();" plain="true">匯出</a>

使用poi匯出excel檔案

一、獲取資料     private List<PmsrT2> getPmsrT2List(HttpServletRequest request) {         try {  &

poi匯出excel方式和疑難

最近由於公司要做什麼資訊安保,要對匯出的檔案進行加密操作,供應商提供的api對檔案進行加密需要檔案路徑,現有的匯出都直接輸出流解決,沒辦法只能改變匯出方法,在尋找好的匯出過程試過許多方式,也遇到很蛋疼的問題。 首先匯出excel的方式目前發現以下3種,1:最常用的輸出流形勢直接將檔案返回給客戶端。

POI匯出Excel簡單示例

 簡單示例,poi操作Excel實現中文列寬自適應。 maven專案,在pom.xml檔案中引入poi的jar包依賴。 非maven專案需要先下載poi相關jar包匯入。 <dependency> <groupId>org.apache.poi&

poi-匯出Excel

最新poi的jar包。與之前版本存在樣式設定區別 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apach

poi匯出excel縮放比例的問題

  某次修改了一下controller裡匯出清單的表格格式之後,就發現一直有這個問題,今天把手頭的活都處理完了就在找問題出在哪,好在匯出清單的格式寫在了兩個controller裡,對照一比較發現了問題,sheet.setZOOM(numerator:130,denominator:1)我原來是這樣寫的,這樣寫

poi匯出Excel Java POI匯入匯出Excel

Java POI匯入匯出Excel   1、異常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException     解決方法:     

java poi匯出excel 工具

基本上每個系統或多或少都有一些匯出功能,我之前做的系統是針對每個功能定製一個匯出,而且我看網上的也大多是這麼做的,這樣就存在一個程式碼冗餘的問題,而且增加工作量,今天整理了一下,系統中所有的匯出都可以引用(注意我這裡說的是excel,word的暫時還沒整理),並且支援匯出圖片,上程式碼。 1. jar包準備