国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用POI實(shí)現(xiàn)JAVA操作Excel文件

這篇具有很好參考價(jià)值的文章主要介紹了使用POI實(shí)現(xiàn)JAVA操作Excel文件。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、POI工具介紹

1.1、POI 是用Java編寫的免費(fèi)開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。

1.2、主要是運(yùn)用其中讀取和輸出excel的功能。

1.3、POI官網(wǎng)地址:

https://poi.apache.org/components/index.html

2、POI可操作的文件類型

java poi 讀取excel,java,excel,開發(fā)語言

3、POI所需依賴

		<!--xls(03)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <!--xlsx(07)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

4、xls和xlsx的區(qū)別

xls是excel03版本 xlsx是excel07版本

最大的區(qū)別是行列數(shù)不同

xls最大支持65536行、256列
xlsx最大支持1048576行、16384列

poi操作

poi 操作xls
poi-ooml操作xlsx

5、POI Excel 寫 03(xls)和07(xlsx)版本方式

package poi;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author yw
 * @since 2022/11/20
 */
public class ExcelWrite {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    String PATH = "D:\\excel\\";

    /**
     * 寫工作簿 03版本
     */
    @Test
    public void Write03() throws Exception {
        //1.創(chuàng)建一個(gè)工作簿
        Workbook workbook = new HSSFWorkbook();
        //2.創(chuàng)建 一個(gè)工作表
        Sheet sheet = workbook.createSheet("工人表");
        //3.創(chuàng)建一行
        Row row1 = sheet.createRow(0);
        //4.創(chuàng)建一個(gè)單元格
        //(1,1)
        Cell cell1 = row1.createCell(0);
        cell1.setCellValue("工號");
        //(1,2)
        Cell cell2 = row1.createCell(1);
        cell2.setCellValue("日期");

        //創(chuàng)建第二行
        Row row2 = sheet.createRow(1);
        //(2,1)
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue(001);
        //(2,2)
        Cell cell22 = row2.createCell(1);
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
        String datetime = sdf.format(new Date());
        cell22.setCellValue(datetime);

        //生成一張表(IO流),03版本就是使用xls結(jié)尾
        FileOutputStream fos = new FileOutputStream(PATH + "工人表03.xls");
        //輸出
        workbook.write(fos);
        //關(guān)閉流
        fos.close();
        System.out.println("文件生成完畢");
    }

    /**
     * 寫工作簿 07版本
     */
    @Test
    public void Write07() throws Exception {
        //1.創(chuàng)建一個(gè)工作簿
        Workbook workbook = new XSSFWorkbook();
        //2.創(chuàng)建 一個(gè)工作表
        Sheet sheet = workbook.createSheet("工人表");
        //3.創(chuàng)建一行
        Row row1 = sheet.createRow(0);
        //4.創(chuàng)建一個(gè)單元格
        //(1,1)
        Cell cell1 = row1.createCell(0);
        cell1.setCellValue("工號");
        //(1,2)
        Cell cell2 = row1.createCell(1);
        cell2.setCellValue("日期");

        //創(chuàng)建第二行
        Row row2 = sheet.createRow(1);
        //(2,1)
        Cell cell21 = row2.createCell(0);
        cell21.setCellValue(001);
        //(2,2)
        Cell cell22 = row2.createCell(1);
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
        String datetime = sdf.format(new Date());
        cell22.setCellValue(datetime);

        //生成一張表(IO流),03版本就是使用xlsx結(jié)尾
        FileOutputStream fos = new FileOutputStream(PATH + "工人表07.xlsx");
        //輸出
        workbook.write(fos);
        //關(guān)閉流
        fos.close();
        System.out.println("文件生成完畢");
    }
}

6、HSSF和XSSF寫大文件的區(qū)別

6.1、使用HSSF寫大文件

@Test
    public void Write03BigData() throws Exception{
        //時(shí)間
        long begin = System.currentTimeMillis();
        //1.創(chuàng)建一個(gè)工作簿
        Workbook workbook = new HSSFWorkbook();
        //2.創(chuàng)建一個(gè)表
        Sheet sheet = workbook.createSheet("sheet1");
        //寫入數(shù)據(jù)
        for (int rowNum = 0;rowNum<65536;rowNum++){
            //3.創(chuàng)建行
            Row row = sheet.createRow(rowNum);
            for (int CellNum = 0;CellNum<10;CellNum++){
                Cell cell = row.createCell(CellNum);
                cell.setCellValue(CellNum);
            }
        }
        System.out.println("over");
        //獲取io流
        FileOutputStream fos = new FileOutputStream(PATH+"Write03BigData.xlsx");
        //生成一張表
        workbook.write(fos);
        fos.close();
        long end = System.currentTimeMillis();
        System.out.println("耗時(shí):"+(end-begin));
    }

java poi 讀取excel,java,excel,開發(fā)語言
優(yōu)點(diǎn):過程中寫入緩存,不操作磁盤,最后再一次性導(dǎo)入磁盤,速度快+
缺點(diǎn):但是只能寫入65535條數(shù)據(jù),超過就會報(bào)異常
java poi 讀取excel,java,excel,開發(fā)語言

6.2、使用XSSF寫大文件

@Test
    public void Write07BigData() throws Exception{
        //時(shí)間
        long begin = System.currentTimeMillis();
        //1.創(chuàng)建一個(gè)工作簿
        Workbook workbook = new XSSFWorkbook();
        //2.創(chuàng)建一個(gè)表
        Sheet sheet = workbook.createSheet("sheet1");
        //寫入數(shù)據(jù)
        for (int rowNum = 0;rowNum<1000000;rowNum++){
            //3.創(chuàng)建行
            Row row = sheet.createRow(rowNum);
            for (int CellNum = 0;CellNum<10;CellNum++){
                Cell cell = row.createCell(CellNum);
                cell.setCellValue(CellNum);
            }
        }
        System.out.println("over");
        //獲取io流
        FileOutputStream fos = new FileOutputStream(PATH+"Write07BigData.xlsx");
        //生成一張表
        workbook.write(fos);
        fos.close();
        long end = System.currentTimeMillis();
        System.out.println("耗時(shí):"+(end-begin));
    }

java poi 讀取excel,java,excel,開發(fā)語言

優(yōu)點(diǎn):可以寫較大數(shù)據(jù)量(超過655135條),如10萬條
缺點(diǎn):寫數(shù)據(jù)時(shí),速度非常慢,非常消耗內(nèi)存,也會容易發(fā)生內(nèi)存溢出,如100萬條的時(shí)候。

6.3、使用SXSS寫大文件

@Test
    public void Write07BigDataS() throws Exception{
        //時(shí)間
        long begin = System.currentTimeMillis();
        //1.創(chuàng)建一個(gè)工作簿
        Workbook workbook = new SXSSFWorkbook(200);
        //2.創(chuàng)建一個(gè)表
        Sheet sheet = workbook.createSheet("sheet1");
        //寫入數(shù)據(jù)
        for (int rowNum = 0;rowNum<1000000;rowNum++){
            //3.創(chuàng)建行
            Row row = sheet.createRow(rowNum);
            for (int CellNum = 0;CellNum<10;CellNum++){
                Cell cell = row.createCell(CellNum);
                cell.setCellValue(CellNum);
            }
        }
        System.out.println("over");
        //獲取io流
        FileOutputStream fos = new FileOutputStream(PATH+"Write07BigDataS.xlsx");
        //生成一張表
        workbook.write(fos);
        fos.close();
        //清除臨時(shí)文件
        ((SXSSFWorkbook) workbook).dispose();
        long end = System.currentTimeMillis();
        System.out.println("耗時(shí):"+(end-begin));
    }

java poi 讀取excel,java,excel,開發(fā)語言
優(yōu)點(diǎn):可以寫超大數(shù)據(jù)量的,比如100萬條,寫數(shù)據(jù)速度更快,占用更少內(nèi)存
注意:
1、過程中會產(chǎn)生臨時(shí)文件,結(jié)束時(shí)需要注意清理
2、默認(rèn)100條記錄會保存在內(nèi)存中,如果超過這個(gè)數(shù)據(jù),則最前面的數(shù)據(jù)會被寫入磁盤中
3、如果想自定義內(nèi)存中的數(shù)量,則可以new SXSSFWorkbook(自定義數(shù)量)

SXSSFWorkbook-來至官方的解釋︰實(shí)現(xiàn)"BigGridDemo"策略的流式XSSFWorkbook版本。這允許寫入非常大的文件而不會耗盡內(nèi)存,因?yàn)槿魏螘r(shí)候只有可配置的行部分被保存在內(nèi)存中。文章來源地址http://www.zghlxwxcb.cn/news/detail-628772.html

到了這里,關(guān)于使用POI實(shí)現(xiàn)JAVA操作Excel文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java通過poi讀取excel中的日期類型

    Java 讀取Excel表格日期類型數(shù)據(jù)的時(shí)候,讀出來的是這樣的 12-十月-2020,而Excel中輸入的是 2020/10/12 或 2020-10-12 poi處理excel時(shí),當(dāng)excel沒有明確指明是哪個(gè)類型的數(shù)據(jù)時(shí),poi很可能處理單元格的日期數(shù)據(jù)時(shí)就有可能是一串?dāng)?shù)字,而使用java程序基本無法轉(zhuǎn)換。 Excel數(shù)據(jù)處理: Exc

    2024年02月15日
    瀏覽(27)
  • JAVA:使用POI SXSSFWorkbook方式導(dǎo)出Excel大數(shù)據(jù)文件

    Apache POI 是用Java編寫的免費(fèi)開源的跨平臺的 Java API,Apache POI提供API給Java對Microsoft Office格式檔案讀和寫的功能。POI組件可以提供Java操作Microsoft Office的API,導(dǎo)出格式為Office 2003時(shí)POI調(diào)用的HSSF包,導(dǎo)出格式為Office 2007時(shí),調(diào)用XSSF包,而SXSSF包是POI3.8版本之上對XSSF的一個(gè)擴(kuò)展,用

    2024年02月11日
    瀏覽(21)
  • 蒼穹外賣集成 Apache POI Java實(shí)現(xiàn)Excel文件的讀寫下載

    蒼穹外賣集成 Apache POI Java實(shí)現(xiàn)Excel文件的讀寫下載

    Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is pleased to announce the release of 5.2.3. Several dependencies were updated to their latest versions to pick up security fixes and other improvements. A summary of changes is available in the Release Notes. A full list of changes is a

    2024年02月09日
    瀏覽(31)
  • JAVA操作Excel之POI

    JAVA操作Excel之POI

    POI提供API給JAVA程序?qū)icrosoft Office格式檔案讀和寫的功能 基本功能如下: HSSF – 提供讀寫Excel格式(03)xls文件 XSSF – 提供讀寫Excel OOXML格式(07)xlsx文件 HWPF – 提供讀寫Word格式 HSLF – 提供讀寫PowerPoint格式 HDGF – 提供讀寫Visio格式 【注】03版本最多65535行,07版本的沒有限制

    2024年02月06日
    瀏覽(21)
  • JAVA POI的excel中包含圖片進(jìn)行讀取保存,單張圖片,多張圖片

    JAVA POI的excel中包含圖片進(jìn)行讀取保存,單張圖片,多張圖片

    ---------------------------------------------效果---------------------------------------------------------- 1.單張圖片 2.多張圖片

    2024年02月11日
    瀏覽(24)
  • Java使用POI導(dǎo)出Excel

    Java使用POI導(dǎo)出Excel

    在項(xiàng)目開發(fā)中往往需要使用到Excel的導(dǎo)入和導(dǎo)出,導(dǎo)入就是從Excel中導(dǎo)入到DB中,而導(dǎo)出就是從DB中查詢數(shù)據(jù)然后使用POI寫到Excel上。 操作Excel目前比較流行的就是 Apache POI 和阿里巴巴的 easyExcel ! 廢話不多說,開始擼起來?。。?POI官網(wǎng);https://poi.apache.org/ POI官網(wǎng)API:https://poi.

    2024年02月04日
    瀏覽(36)
  • Java POI (2)—— Excel文件的上傳與導(dǎo)出(實(shí)例演示)

    Java POI (2)—— Excel文件的上傳與導(dǎo)出(實(shí)例演示)

    ?????????這里是一個(gè)demo的流程圖,下面按照這個(gè)流程圖做了一個(gè)簡單的實(shí)現(xiàn),有部分判斷沒有加上,實(shí)際操作中,可以根據(jù)自己的需求進(jìn)行增加或者修改。并且此處還是在接受文件傳入后將文件進(jìn)行了下載,保存到本地的操作,這個(gè)要按照具體情況具體分析,看需求是否

    2024年02月11日
    瀏覽(30)
  • java poi實(shí)現(xiàn)Excel多級表頭導(dǎo)出

    java poi實(shí)現(xiàn)Excel多級表頭導(dǎo)出

    最近碰到一個(gè)導(dǎo)出,比較繁瑣,也查詢了許多博客,在其中一篇博客的基礎(chǔ)上修改,實(shí)現(xiàn)了最終想要的效果。話不多說,直接上效果圖 1.主代碼: 2.合并單元格 3.設(shè)置表頭單元格的寬度 4.填充數(shù)據(jù)(注:我這里的數(shù)據(jù)格式是ListMapString, Object類型,可以根據(jù)自己的實(shí)際情況來封

    2024年02月03日
    瀏覽(47)
  • POI實(shí)現(xiàn)Excel省市區(qū)三級聯(lián)動(dòng)java實(shí)現(xiàn)

    2003版Excel 2007版Excel 時(shí)間校驗(yàn)2003版 數(shù)據(jù)校驗(yàn)2007版

    2024年02月06日
    瀏覽(33)
  • 【Java】使用POI按模板樣式導(dǎo)出Excel

    根據(jù)模板樣式進(jìn)行excel導(dǎo)出。 首先,當(dāng)然是要有一個(gè)excel模板,excel的樣式用wps等進(jìn)行設(shè)置。 然后就是代碼的實(shí)現(xiàn)了,先引入POI的依賴: 然后就是實(shí)現(xiàn)方法里的代碼,首先定義響應(yīng)信息: 然后將excel模板轉(zhuǎn)為輸入流,這一步的實(shí)現(xiàn)方法有很多,具體選擇因人而異,我這里就舉

    2024年02月14日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包