Apache POI簡介

三十二、Apache POI

32.1 介紹

Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。簡單來說就是,我們可以使用POI在Java程序中對Miscrosoft Office各種文件進行讀寫操作。

一般情況下,POI都是用于操作Excel文件。

Apache POI 的應用場景:

  • 銀行網銀系統導出交易明細

  • 各種業務系統導出Excel報表

  • 批量導入業務數據

32.2 入門案例

Apache POI 既可以將數據寫入Excel文件,也可以讀取Excel文件中的數據,接下來分別進行實現。

Apache POI的maven坐標:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.16</version>
</dependency>
32.2.1 將數據寫入Excel文件

1). 代碼開發

package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;public class POITest {/*** 通過POI創建Excel 文件并且寫入文件內容*/public static void write() throws Exception {//在內存中創建一個Excel文件XSSFWorkbook excel = new XSSFWorkbook();//在Excel文件中創建一個Sheet頁XSSFSheet sheet = excel.createSheet("info");//在Sheet中創建一個行對象,rownum編號從0開始XSSFRow row = sheet.createRow(0);//創建單元格并且寫入文件內容row.createCell(0).setCellValue("姓名");row.createCell(1).setCellValue("城市");//創建一個新行row = sheet.createRow(1);row.createCell(0).setCellValue("張三");row.createCell(1).setCellValue("北京");row = sheet.createRow(2);row.createCell(0).setCellValue("李四");row.createCell(1).setCellValue("南京");//通過輸出流將內存中的Excel文件寫入到磁盤FileOutputStream out = new FileOutputStream(new File("D:\\info.xlsx"));excel.write(out);//關閉資源out.close();excel.close();}public static void main(String[] args) throws Exception {write();}
}

2). 實現效果

在D盤中生成info.xlsx文件,創建名稱為info的Sheet頁,同時將內容成功寫入。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

32.2.2 讀取Excel文件中的數據

1). 代碼開發

/*** 通過POI讀取Excel文件中的內容*/
public static void read() throws Exception {InputStream inputStream = new FileInputStream(new File("D:\\info.xlsx"));//讀取磁盤上已經存在的Excel文件XSSFWorkbook excel = new XSSFWorkbook(inputStream);//讀取Excel文件中的第一個Sheet頁XSSFSheet sheet = excel.getSheetAt(0);//獲取Sheet中最后一行的行號int lastRowNum = sheet.getLastRowNum();for (int i=0;i<=lastRowNum;i++){//獲得某一行XSSFRow row = sheet.getRow(i);//獲得單元格對象String cellValue1 = row.getCell(0).getStringCellValue();String cellValue2 = row.getCell(1).getStringCellValue();System.out.println(cellValue1+" "+cellValue2);}//關閉資源inputStream.close();excel.close();
}public static void main(String[] args) throws Exception {//write();read();
}

2). 實現效果

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160378.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于區域劃分的GaN HEMT 準物理大信號模型

GaN HEMT器件的大信號等效電路模型分為經驗基模型和物理基模型。經驗基模型具有較高精度但參數提取困難&#xff0c;特別在GaN HEMT器件工藝不穩定的情況下不易應用。相比之下&#xff0c;物理基模型從器件工作機理出發&#xff0c;參數提取相對方便&#xff0c;且更容易更新和…

火山引擎 ByteHouse 的增強型數據導入技術實踐

作為企業數字化建設的必備要素&#xff0c;易用的數據引擎能幫助企業提升數據使用效率&#xff0c;更好提升數據應用價值&#xff0c;夯實數字化建設基礎。 數據導入是衡量OLAP引擎性能及易用性的重要標準之一&#xff0c;高效的數據導入能力能夠加速數據實時處理和分析的效率。…

Sa-Token 整合Java17和SpringBoot

目錄 前言引入項目開啟登錄認證路由攔截鑒權解決兼容問題總結 前言 之前無意中發現Sa-Token權限認證框架&#xff0c;項目十分好用。 項目地址&#xff1a; https://github.com/dromara/sa-token 官網地址&#xff1a; https://sa-token.cc/doc.html#/start/example 我的個人…

如何輕松應對企業網絡管理挑戰,釋放網絡靈活性

企業在日常經營中&#xff0c;越來越依賴于云應用程序&#xff0c;分散的團隊和統一通信。這些變化使得保持網絡連接性不僅是必要的&#xff0c;而且對任務的成功完成至關重要。 傳統的廣域網&#xff08;WAN&#xff09;并不總能適應這些挑戰&#xff0c;因為它們往往無法提供…

不停的挖掘硬盤的最大潛能

從 NAS 上退休的硬盤被用在了監控的存儲上了。 隨著硬盤使用壽命的接近尾聲&#xff0c;感覺就是從高附加值數據到低附加值數據上。監控數據只會保留那么幾個月的時間&#xff0c;很多時候都會被覆蓋重新寫入。 有人問為什么監控數據不保留幾年的&#xff0c;那是因為監控數據…

java_函數式接口

文章目錄 一、什么是函數式接口二、四大核心函數式接口三、使用舉例 一、什么是函數式接口 如果一個接口只有一個抽象方法&#xff0c;那么該接口就是一個函數式接口函數式接口的實例可以通過 lambda 表達式、方法引用或者構造方法引用來創建如果我們在某個接口上聲明了 Funct…

【Unity入門】鼠標輸入和鍵盤輸入

Unity的Input類提供了許多監聽用戶輸入的方法&#xff0c;比如我們常見的鼠標&#xff0c;鍵盤&#xff0c;手柄等。我們可以用Input類的接口來獲取用戶的輸入信息 一、監聽鼠標輸入 GetMouseButtonUp 、GetMouseButtonDown、GetMouseButton input.GetMouseButtonDown和 inp…

從mysql源碼編譯出相應的庫和可執行文件及搭建mysql服務端

目錄 1. 問題的提出 2. 源碼下載 3. 升級或安裝某些前置軟件 3.1. 升級CMake 3.2. 升級gcc、g 4. 安裝依賴庫 4.1. 安裝OpenSSL 4.2. 安裝Curses 4.3. 安裝pkg-config 5. 編譯、安裝 6. 編譯結果、配置 7. 編譯錯誤處理 7.1. 錯誤1 7.2. 錯誤2 8. 搭建mysql數…

VMware三種網絡模式

橋接模式 NAT(網絡地址轉換模式) Host-Only(僅主機模式) 參考&#xff1a; vmware虛擬機三種網絡模式 - 知乎 (zhihu.com)

【中國平安社招校招】【內推】【當天內推】

中國平安社招校招內推 通過內推鏈接即時內推&#xff0c;反饋速度比正常要快(可私信問進度) 開放大量HC(不限崗位和地區,技術、設計、產品、運營、數據等都可內推) Step1&#xff1a;查看相關職位 瀏覽平安的招聘官網&#xff1a;復制以下地址至瀏覽器打開。注意以下鏈接包含…

一篇文章搞懂WPF動畫的使用技巧

WPF 動畫系統提供了豐富的功能&#xff0c;用于為 UI 元素創建流暢的動態效果。動畫可以應用于任何可用于渲染的屬性&#xff0c;比如位置、顏色、大小等。在 WPF 中&#xff0c;動畫是通過更改隨時間變化的屬性來實現的。 WPF動畫基本用法 例如實現如下的動畫效果&#xff1…

合并區間問題

以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1&#xff1a; 輸入&#xff1a;intervals [[1,…

Java如何獲取泛型類型

泛型&#xff08;Generic&#xff09; 泛型允許程序員在強類型程序設計語言中編寫代碼時使用一些以后才指定的類型&#xff0c;在實例化時作為參數指明這些類型。各種程序設計語言和其編譯器、運行環境對泛型的支持均不一樣。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Vis…

WPF樹形控件TreeView使用介紹

WPF 中的 TreeView 控件用于顯示層次結構數據。它是由可展開和可折疊的 TreeViewItem 節點組成的&#xff0c;這些節點可以無限嵌套以表示數據的層次。 TreeView 基本用法 例如實現下圖的效果&#xff1a; xaml代碼如下&#xff1a; <Window x:Class"TreeView01.Mai…

springcloud整合seata我踩過的坑

版本問題 seata 1.5和1.5之前的目錄結構不同,使用docker修改的配置文件也不同 1.4的左右 1.5之后docker 掛載文件也不同 1.5之前是使用自己寫的掛載registry docker run -d -p 8091:8091 -p 7091:7091 --network newlead --name seata-serve -e SEATA_IP192.168.249.132…

4:kotlin 方法(Functions)

想要聲明一個函數需要使用fun關鍵字 fun hello() {return println("Hello, world!") }fun main() {hello()// Hello, world! }格式: fun 方法名(參數1: 參數1類型, 參數2 : 參數2類型, ...): 返回值類型 {方法體return 返回值 }fun 方法名(參數1: 參數1類型, 參數2…

人工智能基礎_機器學習047_用邏輯回歸實現二分類以上的多分類_手寫代碼實現邏輯回歸OVR概率計算---人工智能工作筆記0087

然后我們再來看一下如何我們自己使用代碼實現邏輯回歸的,對二分類以上,比如三分類的概率計算 我們還是使用鶯尾花數據 首先我們把公式寫出來 def sigmoid(z): 定義出來這個函數 可以看看到這需要我們理解OVR是如何進行多分類的,我們先來看這個 OVR分類器 思想 OVR(One-vs-…

UE 進階篇一:動畫系統

導語: 下面的動畫部分功能比較全,可以參考這種實現方式,根據自己項目的顆粒度選擇部分功能參考,我們商業項目動畫部分也是這么實現的。 最后實現的效果如下: 最終效果 目錄: ------------------------------------------- 文末有視頻教程/工程地址鏈接 -------------…

9、鴻蒙應用桌面圖標外觀和國際化

一、項目資源目錄 項目下的resoueces目錄為資源配置目錄&#xff0c;其中base為基礎配置&#xff0c;即在任何語言環境下都會加載的資源&#xff0c; color.json&#xff1a;用于配置顏色&#xff0c;如頁面的背景和文字的顏色。 string.json&#xff1a;用于設置文字&#…

Selenium切換窗口、框架和彈出框window、ifame、alert

一、切換窗口 #獲取打開的多個窗口句柄 windows driver.window_handles #切換到當前最新打開的窗口 driver.switch_to.window(windows[-1]) #最大化瀏覽器 driver.maximize_window() #刷新當前頁面 driver.refresh() 二、切換框架frame 如存在以下網頁&#xff1a; <htm…