国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

POI的使用及導(dǎo)出excel報(bào)表

Ilikewhite / 611人閱讀

摘要:的使用及導(dǎo)出報(bào)表首先,了解是什么一基本概念是軟件基金會(huì)的開放源碼函式庫(kù),提供給程序?qū)Ω袷綑n案讀和寫的功能。

POI的使用及導(dǎo)出excel報(bào)表

首先,了解poi是什么?

一、基本概念

? Apache POI是Apache軟件基金會(huì)的開放源碼函式庫(kù),POI提供API給Java程序?qū)icrosoft Office格式檔案讀和寫的功能。

二、基本結(jié)構(gòu)

? HSSF - 提供讀寫Microsoft Excel格式檔案的功能。

? XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。

? HWPF - 提供讀寫Microsoft Word格式檔案的功能。

? HSLF - 提供讀寫Microsoft PowerPoint格式檔案的功能。

? HDGF - 提供讀寫Microsoft Visio格式檔案的功能。

概念先了解這么多,具體可自行谷歌

一開始模仿公司項(xiàng)目的代碼,使用一些工具類ExcelHelper、ExportUtil 來創(chuàng)建excel,并導(dǎo)出,部分代碼如下:

// ...
ExcelHelper.writeExcel(fileName, excelVOList, ProblemLiveVO.class, null, titles);
ExportUtil.exportToClient(response, ContentType.MULTIPART_FORM_DATA.toString(), ParamsUtil.EXCEL, fileName, true);

? 后來發(fā)現(xiàn),用此方式不太合適,一般我們要做報(bào)表的話,產(chǎn)品經(jīng)理會(huì)先給一個(gè)報(bào)表模板,我們可以將此報(bào)表模板做得美觀一些(設(shè)置好表頭顏色等),然后先用poi讀取這份模板,再添加修改,最后直接導(dǎo)出到客戶端。這樣效率也更高。其實(shí)poi的使用是比較簡(jiǎn)單的,可參考以下代碼:(有詳細(xì)注釋)

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public ResponseEntity downloadExcel() {

    // 1.封裝數(shù)據(jù)到 List(此處需按實(shí)際情況封裝數(shù)據(jù))
    List list = reportFinancialDao.findAll();

    try {
        // 2.讀取報(bào)表模板
        URL resource = this.getClass().getClassLoader()
            .getResource("excel/NiceReportForm.xlsx");
        Assert.notNull(resource, "讀取不到財(cái)務(wù)報(bào)表模板");
        String path = resource.getPath();
        FileInputStream fis = new FileInputStream(path);
        String fileName = "財(cái)務(wù)報(bào)表" + new SimpleDateFormat("yyyyMMddHHmmss")
            .format(new Date()) + ".xlsx";

        // 創(chuàng)建Workbook
        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        // 讀取sheet1
        XSSFSheet sheet = workbook.getSheetAt(0);
        // 設(shè)置表格居中
        XSSFCellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setAlignment(HorizontalAlignment.CENTER);

        // 3.向excel中添加數(shù)據(jù)
        int rowLine = 2; // 2即為第三行, 從0開始算, 根據(jù)實(shí)際情況設(shè)置
        for (ReportFinancial report : list) {
            XSSFRow row = sheet.createRow(rowLine++);
            row.createCell(0).setCellValue(report.getReportFinancialId());
            row.createCell(1).setCellValue(report.getNickName());
            row.createCell(2).setCellValue(report.getMoney());
            row.createCell(3).setCellValue(report.getCreateTime());
            // ...根據(jù)實(shí)際數(shù)據(jù)添加

            // 設(shè)置以上添加的表格數(shù)據(jù)居中
            for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) {
                row.getCell(i).setCellStyle(cellStyle);
            }
        }

        // 4.將workbook中的數(shù)據(jù)寫到輸出流中
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        workbook.write(baos);
        baos.close();

        // 5.設(shè)置請(qǐng)求頭, 返回一個(gè)ResponseEntity
        HttpHeaders headers = new HttpHeaders();
        headers.set(HttpHeaders.CONTENT_ENCODING, "UTF-8");
        headers.setContentDispositionFormData("attachment", fileName);
        headers.setPragma(fileName);
        headers.setCacheControl("No-cache");
        headers.setDate("Expires", 0);
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<>(baos.toByteArray(), headers, HttpStatus.CREATED);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

此部分代碼為Service層的代碼,返回值為ResponseEntity,Controller層直接將ResponseEntity返回就可以了,前端訪問此接口就能下載excel文件。

此 downloadExcel 方法可作為參考,需要更改的有:

第一步,根據(jù)實(shí)際情況封裝數(shù)據(jù)

第二步,模板報(bào)表的位置,我是放在resources/excel下

第三步,將實(shí)際數(shù)據(jù)添加到表格的某行某列中 row.createCell(0).setCellValue( )

當(dāng)然,將數(shù)據(jù)寫回客戶端,還有另一種方式,寫到 HttpServletResponse response 的輸出流,可自行選擇。

最后,此篇文章只是實(shí)現(xiàn)簡(jiǎn)單的excel表格,需要更加具體詳細(xì)的設(shè)置,可自行查看API

廣州蘆葦科技Java開發(fā)團(tuán)隊(duì)

蘆葦科技-廣州專業(yè)互聯(lián)網(wǎng)軟件服務(wù)公司

抓住每一處細(xì)節(jié) ,創(chuàng)造每一個(gè)美好

關(guān)注我們的公眾號(hào),了解更多

想和我們一起奮斗嗎?lagou搜索“ 蘆葦科技 ”或者投放簡(jiǎn)歷到 server@talkmoney.cn 加入我們吧

關(guān)注我們,你的評(píng)論和點(diǎn)贊對(duì)我們最大的支持

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72835.html

相關(guān)文章

  • poi導(dǎo)出excel

    摘要:積分消費(fèi)明細(xì)對(duì)賬單其中,有四個(gè)參數(shù),分別是,,,。導(dǎo)出讀取數(shù)據(jù)庫(kù)的信息,轉(zhuǎn)成。 public void detailExport() { String sourceSystem = getPara(source_system); String dataDate = getPara(data_date); Integer pointsType = get...

    RayKr 評(píng)論0 收藏0
  • 基于haddopHDFS和Excel開源庫(kù)POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)

    摘要:說明這里用到的項(xiàng)目都是基于的項(xiàng)目。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。放寬了一部分約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。是項(xiàng)目的一部分。 關(guān)鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報(bào)表 需求背景 在業(yè)務(wù)需求方面,每個(gè)企業(yè)或多或少都會(huì)有報(bào)表導(dǎo)出的作業(yè),量少則可是使用輸出流或者字符串的...

    Nekron 評(píng)論0 收藏0
  • 基于haddopHDFS和Excel開源庫(kù)POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)

    摘要:說明這里用到的項(xiàng)目都是基于的項(xiàng)目。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。放寬了一部分約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。是項(xiàng)目的一部分。 關(guān)鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報(bào)表 需求背景 在業(yè)務(wù)需求方面,每個(gè)企業(yè)或多或少都會(huì)有報(bào)表導(dǎo)出的作業(yè),量少則可是使用輸出流或者字符串的...

    luffyZh 評(píng)論0 收藏0
  • POI如何高效導(dǎo)出百萬級(jí)Excel數(shù)據(jù)?

    摘要:閱讀原文如何高效導(dǎo)出百萬級(jí)數(shù)據(jù)在一個(gè)具有統(tǒng)計(jì)功能的系統(tǒng)中,導(dǎo)出功能幾乎是一定的,如何導(dǎo)出導(dǎo)出的數(shù)據(jù)有多少如何高效的導(dǎo)出簡(jiǎn)介什么是就不用介紹了,這里主要說明不同版本下每個(gè)下的行列限制。 閱讀原文:POI如何高效導(dǎo)出百萬級(jí)Excel數(shù)據(jù)? 在一個(gè)具有統(tǒng)計(jì)功能的系統(tǒng)中,導(dǎo)出excel功能幾乎是一定的,如何導(dǎo)出excel?導(dǎo)出的數(shù)據(jù)有多少?如何高效的導(dǎo)出? Excel簡(jiǎn)介什么是excel就不用...

    lemanli 評(píng)論0 收藏0
  • 基于haddopHDFS和Excel開源庫(kù)POI導(dǎo)出大數(shù)據(jù)報(bào)表(二)

    摘要:接著上一篇基于的和開源庫(kù)導(dǎo)出大數(shù)據(jù)報(bào)表一的遺留的問題開始,這篇做優(yōu)化處理。這個(gè)錯(cuò)誤造成的直接問題是數(shù)據(jù)空白,因?yàn)橹粫?huì)執(zhí)行一次,第二次條件就為了。幾經(jīng)波折,終于知道,引起錯(cuò)誤的原因是包沖突,和包的沖突。 接著上一篇《基于haddop的HDFS和Excel開源庫(kù)POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)》的遺留的問題開始,這篇做優(yōu)化處理。 優(yōu)化導(dǎo)出流程 在一開始的時(shí)候,當(dāng)我獲取到訂單的數(shù)量,遍歷訂單,獲取...

    WalkerXu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<