• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • POI讀寫EXCEL文件

    標簽: POI  POI操作EXCEL表格  POI讀EXCEL表格  POI寫入數據到EXCEL  POI表格讀寫

    一、Apache POI簡介

    Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。

    基本功能

    結構:

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

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

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

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

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

    二、創建工程所需jar包

    commons-io-2.4.jar
    poi-3.15.jar

    三、環境準備

    1.User.java

    package com.hello.world.pojo;
    
    public class User {
    
    	private int id;
    	
    	private String name;
    	
    	private String sex;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getSex() {
    		return sex;
    	}
    
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", name=" + name + ", sex=" + sex + "]";
    	}
    }
    

    2、Excel文件原始數據

    3、讀取Excel文件內容

    Excel文件保存路徑:D:\excel

    文件名:poi_test.xls

    4、PoiReader.java

    package com.hello.world.poi;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    import com.hello.world.pojo.User;
    /**
     *POI讀取Excel文件
     */
    public class PoiReader {
    
    	public static void main(String[] args) {
    
    		// 將讀取出來的數據封裝到User對象,將User對象添加到集合中
    		List<User> list = new ArrayList<>();
    		try {
    			File file = new File("D:\\excel\\poi_test.xls");
    			FileInputStream input = new FileInputStream(file);
    
    			// HSSFWorkbook用于操作后綴為.xls的excel表格,XSSFWorkbook用于操作.xlsx的excel表格
    			HSSFWorkbook workbook = new HSSFWorkbook(input);
    
    			// 獲取工作簿的方法有兩種,一種是根據索引獲取,第一個sheet的索引為0,還有一種是根據sheet名稱獲取
    			// HSSFSheet sheet = workbook.getSheet("poi");
    			HSSFSheet sheet = workbook.getSheetAt(0);
    
    			// 獲得最后一行的行號
    			// 最后一行行號等于sheet的數據行數
    			int lastNum = sheet.getLastRowNum();
    			// 遍歷獲得每一行,第一行是表頭,從第二行開始
    			for (int i = 1; i < lastNum + 1; i++) {
    				User u = new User();
    				// 得到每一行
    				HSSFRow row = sheet.getRow(i);
    				// 獲得最后一列的值,等于每一行的總列數
    				int lastCellNum = row.getLastCellNum();
    				// 遍歷每一列,得到每一個單元格
    				for (int j = 0; j < lastCellNum; j++) {
    					if (j == 0) {
    						// 第i行第j列單元格,第一列為數字格式
    						HSSFCell cell = row.getCell(j);
    						int id = (int) cell.getNumericCellValue();
    						u.setId(id);
    					}
    					if (j == 1) {
    						HSSFCell cell = row.getCell(j);
    						String name = cell.getStringCellValue();
    						u.setName(name);
    					}
    					if (j == 2) {
    						HSSFCell cell = row.getCell(j);
    						String sex = cell.getStringCellValue();
    						u.setSex(sex);
    					}
    				}
    				list.add(u);
    				// 關閉資源
    				workbook.close();
    			}
    			System.out.println(list);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

    5、結果展示

    [User [id=1, name=name 1, sex=男], User [id=2, name=name 2, sex=男], User [id=3, name=name 3, sex=男], User [id=4, name=name 4, sex=男], User [id=5, name=name 5, sex=男], User [id=6, name=name 6, sex=男], User [id=7, name=name 7, sex=男], User [id=8, name=name 8, sex=男], User [id=9, name=name 9, sex=男], User [id=10, name=name 10, sex=男]]

    與原始數據一致,這里之所以將讀取結果封裝到User對象,然后將User對象添加到集合中,是考慮到實際業務處理,所以沒有將單元格內容直接打印輸出。

    6、利用POI寫入數據到excel表格中

    package com.hello.world.poi;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    /*
     * 利用POI創建excel文件,并寫入數據
     */
    public class PoiWrite {
    
    	public static void main(String[] args) {
    
    		// 表頭信息
    		String[] titles = { "id", "name", "sex" };
    
    		// 創建workbook
    		HSSFWorkbook workbook = new HSSFWorkbook();
    		// 創建sheet
    		HSSFSheet sheet = workbook.createSheet("poi");
    		// 創建第一行
    		HSSFRow row = sheet.createRow(0);
    		for (int i = 0; i < titles.length; i++) {
    			// 將標題添加到第一行里
    			HSSFCell cell = row.createCell(i);
    			cell.setCellValue(titles[i]);
    		}
    
    		// 從第二行開始添加數據,一共十行
    		for (int i = 1; i < 11; i++) {
    			// 得到每一行的對象
    			HSSFRow row2 = sheet.createRow(i);
    			// 為第一個單元格賦值
    			HSSFCell cell2 = row2.createCell(0);
    			cell2.setCellValue(i + "");
    			// 為第二個單元格賦值
    			cell2 = row2.createCell(1);
    			cell2.setCellValue("name " + i);
    			// 為第三個單元格賦值
    			cell2 = row2.createCell(2);
    			cell2.setCellValue("男");
    		}
    
    		try {
    			File file = new File("D:\\excel\\poi_test2.xls");
    			FileOutputStream out = FileUtils.openOutputStream(file);
    			workbook.write(out);
    			workbook.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }

    結果展示:

    表格的樣式也可以進行設置,這里就不詳細介紹了,有興趣的同學可以查看POI官方文檔

     

    版權聲明:本文為weixin_39999535原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_39999535/article/details/81675596

    智能推薦

    pandas讀寫excel文件

    https://www.cnblogs.com/everfight/p/pandas_select_rows.html https://blog.csdn.net/midion9/article/details/89000131 https://blog.csdn.net/fengqiaoxian/article/details/80415354 萬能的pandas能處理excel的20多萬行數據...

    openpyxl讀寫Excel文件

    1. 前言 python里面操作Excel文件有xlrd和xlwt這兩個模塊,xlrd用于讀文件,xlwt用于寫文件。但是xlwt對.xlsx格式的文件支持的不好。OpenPyXL模塊可以用來操作.xlsx格式的文件。下面給出兩個簡單的demo。 安裝命令: 2. 寫操作 文件顯示結果: 3. 讀文件 結果如下:...

    Python——Excel文件讀寫

    最新做測試案例時,需要使用*.xls文件作為輸入,然后發現對于Excel文件,python有第三方庫,官網地址為Working with Excel Files in Python,其中包含多個庫。這里我選用的是xlrd,官網里有文檔鏈接 xlrd cell object(單元格對象)包含三個屬性:ctype, value和xf_index. Python中,cell(單元格)的類型和對應的類型值...

    Python 讀寫excel文件

    最近需要用到Python來操作excel表,讀取表格內容到數據庫。所以就搜索了相關資料。 查找了一下,可以操作excel表的幾個庫有以下幾個: openpyxl 這個是推薦使用的庫,可以讀寫Excel 2010以上格式,以.xlsx結尾的文件。 xlsxwriter 這個支持.xlsx,但是只支持寫入,格式化等操作,不支持讀取。 xlrd 這個支持讀取數據,支持以xls結尾的文件,也就是比較老的格...

    android讀寫excel文件

    android操作excel文件需要用到第三方jar文件,共有兩種jar文件可以供android來操作excel文件:poi.jar和jxl.jar.兩者這要的區別在于poi.jar可以操作excel2007之前的,而jxl.jar只能操作excel2003以前的。接下來分別實現這兩種方式的excel文件讀寫。 ·poi.jar 下載poi.jar包 http://poi.apach...

    猜你喜歡

    python ——讀寫Excel文件

    本節介紹xlrd和xlwt庫讀寫excel文件,使用這些庫的好處在于它不需要使用COM接口驅動Microsoft excel,因此不需要安裝office套件就可以操作excel文件。 1. 讀Excel文件 在xlwt中,用xlwt.Workbook對象表示Excel文件,通過操作此對象可修改Excel文檔內容,最后調用其save()方法將文檔保存成文件。通過操作Workbook對象可創建如下對象...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡