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

Excel文件解析以及超大Excel文件讀寫

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

1.概述

?????????在應(yīng)用程序的開發(fā)過程中,經(jīng)常需要使用Excel 文件來進(jìn)行數(shù)據(jù)的導(dǎo)入或?qū)С觥K?在通過ava語言實(shí)現(xiàn)此類需求的時(shí)候,往往會(huì)面臨著Excel文件的解析(導(dǎo)入)或生成(導(dǎo)出)。
????????在Java技術(shù)生態(tài)圈中,可以進(jìn)行Excel文件處理的主流技術(shù)包括: Apache POI 、JXL 、Alibaba EasyExcel 等。
????????Apache POI 基于DOM方式進(jìn)行解析,將文件直接加載內(nèi)存,所以速度較快,適合Excel 文件數(shù)據(jù)量不大的應(yīng)用場景。JXL只支持Excel 2003以下版本,所以不太常見。
????????Alibaba EasyExcel 采用逐行讀取的解析模式,將每一行的解析結(jié)果以觀察者的模式通知處理
( AnalysisEventListener ) , 所以比較適合數(shù)據(jù)體量較大的Excel 文件解析。

2.Apache POI

????????Apache POI是用Java 編寫的免費(fèi)開源的跨平臺(tái)的Java API,Apache POI提供給Java 程序?qū)icrosoft office 格式檔案進(jìn)行讀寫功能的API 開源類庫:
????????JURCE - 它分別提供對不同格式文件的解析:
????????HSSF - 提供讀寫Microsoft Excel格式檔案的功能。
????????XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。
????????HWPF - 提供讀寫Microsoft Word格式檔案的功能。
????????HSLF - 提供讀寫Microsoft PowerPoint格式檔案的功能。
????????HDGF - 提供讀寫 Microsoft Visio格式檔案的功能。

3.使用XSSF解析Excel文件

????????HSSF用于解析舊版本( *.xIs ) Excel文件,由于舊版本的Excel文件只能存在65535行數(shù)據(jù),所以目前已經(jīng)不常用。所以目前主要采用XSSF進(jìn)行新版本( *.xlsx ) Exce文件的解析。

創(chuàng)建Excel文件?

? ? ? ? ?當(dāng)我們要解析一個(gè)Excel文件時(shí),需要?jiǎng)?chuàng)建一個(gè)Workbook的實(shí)現(xiàn)類XSSFWorkbook,它就代表了一個(gè)Excel文件,

try (Workbook workbook = new XSSFWorkbook();
				FileOutputStream fos = new FileOutputStream("D:\\share\\Demo01.xlsx")) {
    workbook.write(fos);
} catch (IOException e) {
    e.printStackTrace();
}

?加載Excel文件

????????可以創(chuàng)建FileInputStream文件輸入流對象那指定路徑下的Excel文件傳入到XSSFWorkbook中,推薦寫入到try-with-resources中例如:

// 輸入流
FileInputStream fis = new FileInputStream("D:\\share\\Demo01.xlsx");

// Excel文件對象
Workbook workbook = new XSSFWorkbook(fis);

?Sheet(工作簿)

? ? ? ? ?創(chuàng)建工作簿對象

// 按照默認(rèn)名稱創(chuàng)建工作簿
Sheet sheet1 = workbook.createSheet();

// 按照自定義名稱創(chuàng)建工作簿
Sheet sheet2 = workbook.createSheet("自定義工作簿2");

????????獲取工作簿

// 按照名稱獲取工作簿
// org.apache.poi.ss.usermodel.Sheet ss包下的
Sheet sheet0 = workbook.getSheet("Sheet0");

// 按照下標(biāo)獲取工作簿
Sheet sheet1 = workbook.getSheetAt(1);"Sheet0");

????????獲取工作簿的數(shù)量

int n = workbook.getNumberOfSheets();

Row(行數(shù)據(jù))

? ? ? ? 通過sheet來進(jìn)行數(shù)據(jù)行的獲取或創(chuàng)建

獲取當(dāng)前數(shù)據(jù)行

Row row = sheet.createRow(0);

獲取首行下標(biāo)

int first = sheet.getFirstRowNum();

獲取尾行下標(biāo)?

int last = sheet.getLastRowNum();

根據(jù)下標(biāo)獲取指定行?

Row row = sheet.getRow(0);

遍歷所有行

for(Row row : sheet) {
    System.out.println(row);
}

?遍歷指定行

for (int i = 1; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);
    System.out.println(row);
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-467229.html

Cell單元格

創(chuàng)建單元格?

Cell cell0 = row.createCell(0);

設(shè)置單元格值

cell0.setCellValue(//對應(yīng)類型數(shù)據(jù)值);

根據(jù)下標(biāo)獲取單元格

Cell cell = row.getCell(1);

遍歷所有單元格

for(Cell cell : row) {
				
}

獲取單元格的類型

CellType type = cell.getCellType();

設(shè)置單元格樣式

// 創(chuàng)建單元格樣式
DataFormat dataFormat = workbook.createDataFormat();
Short formatCode = dataFormat.getFormat("yyyy-MM-dd HH:mm:ss");
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(formatCode);

// ...

// 為當(dāng)前行創(chuàng)建單元格
Cell cell1 = row.createCell(1);
cell1.setCellStyle(cellStyle); // 設(shè)置單元格樣式
cell1.setCellValue(new Date()); // 保存當(dāng)前日期時(shí)間至本單元格

設(shè)置單元格對齊方式

// 創(chuàng)建單元格樣式
CellStyle cellStyle = workbook.createCellStyle();

//設(shè)置單元格的水平對齊類型。 此時(shí)水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);

// 設(shè)置單元格的垂直對齊類型。 此時(shí)垂直靠底邊
cellStyle.setVerticalAlignment(VerticalAlignment.BOTTOM);

4.超大Excel文件讀寫

????????一般進(jìn)行超大Excel文件的讀寫,一般兩種方式,第一種使用SXSSFWorkbook進(jìn)行寫入,通過設(shè)置SXXFWorkbook 的構(gòu)造參數(shù),可以設(shè)置每次在內(nèi)存中保持的行數(shù),當(dāng)達(dá)到這個(gè)值的時(shí)候,那么會(huì)把這些數(shù)據(jù)flush 到磁盤上,這樣就不會(huì)出現(xiàn)內(nèi)存不夠的情況。第二種使用阿里巴巴提供的EasyExcel工廠類進(jìn)行寫入讀取操作。但是對于不同電腦,不同CPU,不同內(nèi)存讀寫的速度也是不同的。

? ? ? ? 我的電腦比較老CPU是Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz 2.60 GHz,內(nèi)存(RAM)是4.00GB,以下是對應(yīng)的使用EasyExcel寫入100萬條數(shù)據(jù)運(yùn)行后統(tǒng)計(jì)的總耗時(shí):

Excel文件解析以及超大Excel文件讀寫

? ? ? ? ?我的電腦如果使用SXSSFWorkbook來進(jìn)行一般的讀入數(shù)據(jù)直接把IDEA卡到無響應(yīng),作者也是很無奈,所以更推薦與使用EasyExcel來進(jìn)行超大Excel文件的讀寫。

?

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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)文章

  • python之批量讀寫excel文件

    python之批量讀寫excel文件

    首先,導(dǎo)入openpyxl庫中的讀取和新建文件包(比較官方的名稱我沒有查,就按照好理解的方向這樣說),文中關(guān)于行和列的理解都是個(gè)人想法,可能有和讀者不同之處。 先詳細(xì)說怎么樣讀取單個(gè)excel文件,批量在后邊寫。 excel表格格式如下,需要弄清楚的就是excel文件路徑,以

    2024年02月02日
    瀏覽(17)
  • Python讀寫EXCEL文件常用方法

    Python讀寫EXCEL文件常用方法

    python讀寫excel的方式有很多,不同的模塊在讀寫的講法上稍有區(qū)別,這里我主要介紹幾個(gè)常用的方式。 用xlrd和xlwt進(jìn)行excel讀寫; 用openpyxl進(jìn)行excel讀寫; 用pandas進(jìn)行excel讀寫; 為了方便演示,我這里新建了一個(gè)data.xls和data.xlsx文件,第一個(gè)工作表sheet1區(qū)域“A1:E5”的內(nèi)容如下

    2024年02月11日
    瀏覽(17)
  • Python讀寫EXCEL文件常用方法大全

    Python讀寫EXCEL文件常用方法大全

    python讀寫excel的方式有很多,不同的模塊在讀寫的講法上稍有區(qū)別,這里我主要介紹幾個(gè)常用的方式。 用xlrd和xlwt進(jìn)行excel讀寫; 用openpyxl進(jìn)行excel讀寫; 用pandas進(jìn)行excel讀寫; 為了方便演示,我這里新建了一個(gè)data.xls和data.xlsx文件,第一個(gè)工作表sheet1區(qū)域“A1:E5”的內(nèi)容如下

    2024年01月19日
    瀏覽(24)
  • Python使用openpyxl讀寫excel文件

    Python使用openpyxl讀寫excel文件

    需求:讀入sample.xlsx中的信息,通過分析其中的身份證號(hào)信息,得到每個(gè)人的出生日期,性別,年齡,所在省份,星座,屬相等等,將結(jié)果寫入到另一個(gè)excel文件中。 首先,要使用openpyxl第三方庫需要安裝,安裝方法如下: 程序一開頭為了能使用第三方庫,需要先導(dǎo)入 讀入

    2024年02月09日
    瀏覽(25)
  • Apache-POI讀寫excel文件

    ApachePOI是用Java編寫的免費(fèi)開源的跨平臺(tái)的JavaAPI,ApachePOI提供API給Java程序?qū)icrosoftOffice格式檔案讀和寫的功能,其中使用最多的就是使用POI操作Excel文件。 依賴導(dǎo)入: 針對不同的文檔形式來操作的時(shí)候會(huì)提供相應(yīng)的一些類 HSSF - 提供讀寫Microsoft Excel XLS格式檔案的功能 XSSF -

    2024年02月05日
    瀏覽(25)
  • Python 讀寫 Excel 文件庫推薦和使用教程

    Python 讀寫 Excel 文件的庫總體看還是很多的, 各有其優(yōu)缺點(diǎn), 以下用一圖總結(jié)各庫的優(yōu)缺點(diǎn), 同時(shí)對整體友好的庫重點(diǎn)介紹其使用教程。 庫名稱 .xls .xlsx 讀取 寫入 修改 保存 格式調(diào)整 插入圖片 xlrd √ √ √ × × × × × xlwt √ × × √ √ √ √ √ xlutils √ × × √ √ √ × ×

    2024年02月11日
    瀏覽(29)
  • xlsx.js: 基于 JavaScript 的 Excel 文件讀寫庫

    如果你需要在瀏覽器端處理 Excel 文件,那么 xlsx.js 可能是一個(gè)不錯(cuò)的選擇。這是一個(gè)基于 JavaScript 的庫,可以方便地讀取、創(chuàng)建和修改 Excel 文件。 支持多種文件格式:.xlsx, .xlsm, .xlsb, .ods, .csv 等。 支持?jǐn)?shù)據(jù)的讀取和寫入。 支持多種單元格樣式,如字體、顏色、背景色等。

    2024年04月17日
    瀏覽(19)
  • C++讀寫excel文件的的第三方庫

    用于讀取、寫入、創(chuàng)建和修改 Microsoft Excel? (.xlsx) 文件的 C++ 庫。 xlnt 是一個(gè)現(xiàn)代 C++ 庫,用于操作內(nèi)存中的電子表格以及從 XLSX 文件讀取/寫入它們,如ECMA 376 第 4 版中所述。xlnt 1.0 版的首次公開發(fā)布是在 2017 年 5 月 10 日。目前的工作重點(diǎn)是增加兼容性、提高性能以及集思廣

    2024年02月05日
    瀏覽(24)
  • Python 實(shí)現(xiàn)txt、excel、csv文件讀寫【附源碼】

    Python 實(shí)現(xiàn)txt、excel、csv文件讀寫【附源碼】

    前言 一、txt文件讀寫 二、excel文件讀寫 總結(jié) 本文介紹使用Python進(jìn)行文件讀寫操作,包括txt文件、excel文件(xlsx、xls、csv) 編譯器使用的是PyCharm read() ???????????????? # 一次性讀取全部內(nèi)容 readline() ? ? ? ? ? ?# 讀取第一行內(nèi)容 readlines() ???????? # 讀取文本全部內(nèi)

    2024年02月01日
    瀏覽(89)
  • <九> objectARX開發(fā):讀寫Excel、json與txt格式文件

    <九> objectARX開發(fā):讀寫Excel、json與txt格式文件

    ??在實(shí)際應(yīng)用中,有時(shí)候我們需要通過文本格式或者表格等格式來傳遞數(shù)據(jù),例如*.txt、Excel表格或者*.json文件。此時(shí)我們就需要想辦法來讀寫這些數(shù)據(jù)。本節(jié)我們來說一下如何讀寫讀寫Excel、json與txt格式文件。 2.1 讀寫Excel ??excel文件的讀寫有多種方式來實(shí)現(xiàn),這里我們

    2024年02月09日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包