java 讀寫 wps xlsx 文件

2021-03-02 你的愛心小天使

參考

https://blog.csdn.net/weixin_35757704/article/details/78393113

https://blog.csdn.net/qq_41433322/article/details/106725169

依賴包:

<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans --> <dependency>    <groupId>org.apache.xmlbeans</groupId>    <artifactId>xmlbeans</artifactId>    <version>2.6.0</version> </dependency> <!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi-ooxml</artifactId>    <version>3.9</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --> <dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi-ooxml-schemas</artifactId>    <version>3.9</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --> <dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-collections4</artifactId>    <version>4.1</version> </dependency>

讀 xlsx ,測試代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.InputStream;import java.util.HashMap;public class ExcelUtil {    public static void main(String[] args) throws Exception {        XSSFWorkbook xssfSheets = null;        try {            xssfSheets = readXlsxExcel("C:\\Users\\18823\\Desktop\\test.xlsx");        } catch (Exception e) {            e.printStackTrace();            System.out.println("error exit");            return;        }        XSSFSheet xssfSheet = xssfSheets.getSheetAt(0);        int lastRowNum = xssfSheet.getLastRowNum();        System.out.println("last row num = " + lastRowNum);        for (int i = 1; i < lastRowNum; i++) {            String[] strings = readLine(xssfSheet,i);            if(strings == null){                continue;            } System.out.println(strings);            //todo here            //....        }    }//    private static HSSFSheet hssfSheet;//.xls//    private static XSSFSheet xssfSheet;//.xlsx    public static int getAllRowNumber(XSSFSheet xssfSheet) {        return xssfSheet.getLastRowNum();    }    /*讀取 excel 下標為 rowNumber 的那一行的全部數據*/    public static String[] readLine(XSSFSheet xssfSheet,int rowNumber) {        XSSFRow row = xssfSheet.getRow(rowNumber);        if (row != null) {            String[] resultStr = new String[row.getLastCellNum()];            for (int i = 0; i < row.getLastCellNum(); i++) {                XSSFCell cell = row.getCell(i);                if(cell != null){                    resultStr[i] = cell.getStringCellValue();                }else {                    resultStr[i] = "";                }            }            return resultStr;        }        return null;    }    public static XSSFWorkbook readXlsxExcel(String excelPath) throws Exception {        String fileType = excelPath.substring(excelPath.lastIndexOf(".") + 1, excelPath.length());        // 創建工作文檔對象        InputStream in = new FileInputStream(excelPath);        HSSFWorkbook hssfWorkbook = null;//.xls        XSSFWorkbook xssfWorkbook = null;//.xlsx//        //根據後綴創建讀取不同類型的excel//        if (fileType.equals("xls")) {//            hssfWorkbook = new HSSFWorkbook(in);//它是專門讀取.xls的//        } else if (fileType.equals("xlsx")) {//            xssfWorkbook = new XSSFWorkbook(in);//它是專門讀取.xlsx的//        } else {//            throw new Exception("文檔格式後綴不正確!!!");//        }        /*這裡默認只讀取第 1 個sheet*///        if (hssfWorkbook != null) {//            hssfSheet = hssfWorkbook.getSheetAt(0);//        } else if (xssfWorkbook != null) {//            xssfSheet = xssfWorkbook.getSheetAt(0);//        }        if (fileType.equals("xlsx")) {            xssfWorkbook = new XSSFWorkbook(in);//它是專門讀取.xlsx的//            System.out.println("sheet 個數 :" + xssfWorkbook.getNumberOfSheets());            return xssfWorkbook;        }else{            System.out.println("error: 只支持讀取 .xlsx 文件");        }        return null;    }    //讀取第n個sheet    // n >= 0    public static XSSFSheet getXssfSheet(XSSFWorkbook xssfWorkbook,int n){        if(xssfWorkbook == null || n < 0 || n >= xssfWorkbook.getNumberOfSheets()){            return null;        }        return xssfWorkbook.getSheetAt(n);    }}

寫入 xlsx

參考來源 https://blog.csdn.net/qq_41433322/article/details/106725169

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.streaming.SXSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;public class ExcelWriteTest {    public static void main(String[] args) throws Exception {        excelWriteTest();    }    static void excelWriteTest() throws Exception {        FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\18823\\Desktop\\1234.xlsx");               //文件流對象        Workbook wb =  new SXSSFWorkbook();        Sheet sheet = wb.createSheet("test");//創建新 sheet //getSheet 一直不成功        try {            for (int i = 0; i < 5; i++) {//數據 的每行                Row row = sheet.createRow(i);                for (int j = 0; j < 7; j++) {//每一列                    Cell cell = row.createCell(j);                    cell.setCellValue(j+"");                }            }            wb.write(fileOutputStream);        }catch (Exception e){            e.printStackTrace();        }finally {            try {                if (fileOutputStream != null) fileOutputStream.close();                ((SXSSFWorkbook)wb).dispose();//                if (wb != null) wb.close;                System.out.println("寫入完畢");            } catch (IOException e) {                e.printStackTrace();            }        }    }}

寫的結果:

ps:我自己用的時候沒有發現還有後邊寫入的代碼,用了讀出的,實用 

相關焦點

  • R語言讀取xlsx文件
    廢話不多說,這裡還是介紹一下怎麼讀寫xlsx文件吧,畢竟很多人都有強迫症,非要直接讀取xlsx文件,尤其是學習數學的,意志力很堅強!R語言想要處理xlsx文件,需要第三方包xlsx包,而xlsx包又依賴rJava包,因為寫xlsx包的這個大牛不想重複造輪子,直接調用了rJava包中的函數,而rJava包需要java環境,所以總結起來需要完成以下三步:安裝jdk1、去java官網下載jdk安裝包,網址:www.java.com或者www.oracle.com
  • Java實現文件批量導入導出實踐(兼容xls,xlsx)
    1、介紹java 實現文件的導入導出資料庫,目前在大部分系統中是比較常見的功能了,今天寫個小 demo 來理解其原理,沒接觸過的同學也可以看看參考下。目前我所接觸過的導入導出技術主要有 POI 和 iReport,poi 主要作為一些數據批量導入資料庫,iReport 做報表導出。
  • Excel中的xls、xlsx、xlsm混合文件,看我用Python如何統一處理......
    前面的文章,我們已經講述了如何將doc文件轉換為docx文件,還沒有觀看的朋友直接戳此連結:今天黃同學再帶大家探討Python處理Excel文件時,遇到的一些問題。在Python中,有幾個常用的庫專門用來處理Excel文件,分別是xlrd、xlwt和openpyxl,簡單介紹一下:openpyxl可以讀數據和寫數據,但只能處理xlsx;如果待處理的文件,既有xls,又有xlsx時,我覺得還是將它們一併轉換為統一格式
  • xlsx文件打不開怎麼辦?xlsx文件打不開的解決方法
    Excel打不開症狀四:雙擊Excel文件時提示「該文件可能是只讀的,或者你要訪問的位置是只讀的,或者文件所在的伺服器沒有響應。」  xlsx文件怎麼打開?  一、使用在線打開xlsx文件  網易文檔查看  它不僅僅可以打開xlsx文件,還可以打開:  Office系列:doc, docx, ppt, pptx, xls, xlsx  Adobe系列:pdf  圖片系列:jpg, png, bmp, gif  代碼系列:java, jsp, js, c,
  • Java讀取和寫入txt文件
    1 問題描述對於java的讀取和寫入txt一直心存疑惑,隨著知識的積累,又重新進行學習,對java的文件讀寫理解更加深刻,在這裡將自己的小小經驗總結分享給大家。下面是大家了解java流的一個基本框架。2 問題分析在java中,java的讀寫操作(輸入輸出)可以用「流」這個概念來表示,輸入和輸出功能是Java對程序處理數據能力的提高, java的讀寫操作又分為兩種:字符流和字節流。Java以流的形式處理數據。流是一組有序的數據序列,根據操作的類型,分為輸入流和輸出流。
  • 每日一課 | Apache POI –用Java讀寫Excel文件
    HSSF在類名之前添加前綴,以指示與Microsoft Excel 2003文件相關的操作。XSSF在類名之前添加前綴,以指示與Microsoft Excel 2007文件或更高版本相關的操作。"/tmp/MyFirstExcel.xlsx";    public static void main(String[] args) {        XSSFWorkbook workbook = new XSSFWorkbook();        XSSFSheet
  • 14-用Python 讀寫 Excel 文件
    python-excel,含 xlrd、xlwt 和 xlutils 三大模塊,分別提供讀、寫和其他功能可以讀寫 Excel 2007 XLSX 和 XLSM 文件直接通過 COM 組件與Microsoft Excel 進程通信,調用其各種功能實現對 Excel 文件的操作讀❌✅✅✅寫✅✅✅✅修改❌❌⚠️✅.xls❌✅❌✅.xlsx✅⚠️✅✅大文件✅❌✅❌功能強弱一般超強速度快快快超慢系統無限制無限制無限制
  • Java Web安全 || Java基礎 · Java IO/NIO多種讀寫文件方式
    fos.close(); }}代碼邏輯比較簡單: 打開文件->寫內容->關閉文件,調用鏈和底層實現分析請參考FileInputStream。Java提供了一個非常有趣的讀取文件內容的類: java.io.RandomAccessFile,這個類名字面意思是任意文件內容訪問,特別之處是這個類不僅可以像java.io.FileInputStream一樣讀取文件,而且還可以寫文件。
  • 合併多個Excel文件,不管什麼版本的Excel或WPS都適用
    A1」;如果要獲取的在「解晴.xlsx」文件下,就會輸入「='D:\數據\[解晴.xlsx]Sheet1'!A1」。基於此,我們可以不用打開Excel文件,便輕鬆合併多個Excel。步驟1:提取Excel文件名稱在命令提示符中輸入「dir /b Excel文件所在路徑」獲取所有Excel文件的名稱,複製名稱到一個空白Excel工作表中。然後複製A列所有的名稱,選中「B1:H8」區域,按「Ctrl + V」粘貼,這樣「A-H」列都粘貼上了Excel文件名。
  • 什麼是wps的在線預覽
    在寫wps的在線預覽之前,思考:1.通過在線預覽可以滿足用戶的什麼需求2.用戶想通過在線預覽做到什麼,了解完需求,再看在線預覽是什麼,就更加好理解
  • 三種方法高效讀取xls/xlsx格式文件
    另外spss、sas、stata等軟體的數據格式文件導入請參見這篇文章(猛戳:R語言統計與繪圖:數據的輸入與輸出)。1. 從剪切板讀取數據xls/xlsx文件不同於txt、csv文件,需要使用其他的方式讀取。
  • WPS教程:wps文件忘記保存如何找回,你知道嗎?
    咱們在辦公時,最尷尬的莫過於辛辛苦苦編輯的文件,因為斷電或者其他原因導致我們的wps忘記保存。有時候真的會有欲哭無淚的感覺。咱們WPS教程公眾號後臺一位小夥伴的留言,詢問wps文件忘記保存如何找回。小編將操作步驟分享如下:第一步,打開wps,點擊左上角的wps表格。接下來點擊工具----備份管理。
  • Java中的文件鎖到底是怎麼回事?
    # 文件鎖簡介「一般來說,有兩種鎖」:簡單地說,在寫操作完成時,獨佔鎖防止所有其他操作(包括讀操作)。相反,共享鎖允許多個進程同時讀取。讀鎖的目的是防止另一個進程獲取寫鎖。通常,處於一致狀態的文件確實應該被任何進程讀取。在下一節中,我們將看到Java如何處理這些類型的鎖。
  • 咱國產的專業版WPS不香嗎
    wps 2019專業版是金山WPS專為政府、企業、機關單位量身打造的一套功能強大的Office辦公套裝,相相對於wps個人版本
  • 【R包薈萃】Excel文件的批量導入與導出:openxlsx包實用技巧
    本期主要為大家介紹導入和導出excel文件的工具:openxlsx包,以及批量導入導出文件的一些小技巧。install.packages("openxlsx")library("openxlsx")導出excel文件使用的是write.xlsx函數,通過介紹我們可以看到該函數主要是將數據框導出為xlsx文件,同時由於excel可存在多個sheet,該函數也支持導出a list of data.frames。
  • Java 查找替換Excel數據
    使用工具工具:Free Spire.XLS for Java (免費版)註:可通過e-iceblue中文官網在Java產品板塊下載包,並解壓將lib文件夾下的jar文件導入java程序;或者通過maven倉庫下載導入。Jar導入效果:
  • R包readxl 的libxls讀錯誤的解決方法
    結果xls文件不能被readxl包打開。read_xls('bad.xls')Error: filepath: bad.xls libxls error: Unable to open file千辛萬苦安裝了各種讀取xls的R包,一一失敗,不能解決問題笨且有效的辦法用wps或office打開xls,然後另存為xlsx即可。
  • java安全編碼指南之:文件和共享目錄的安全性
    本文主要講講linux下面的文件的權限和安全性問題,並且探討一下如何在java程序中考慮文件的安全性。linux下的文件基本權限chmod是linux下面的權限管理命令,我們可以通過chmod來對文件的權限進行修改。普通文件的權限有三種,rwx分別是讀,寫和執行。
  • R包-openxlsx-學習筆記
    = TRUE)library(devtools)install_github("ycphs/openxlsx")基礎讀寫功能該包最基礎的功能讀寫Excle文件,『讀』在這裡特指將Excle文件中的sheet數據表格以data.frame格式讀取到R中。
  • 詳解Python操作Excel文件
    讀.xls文件的整個表(表有1個分頁,頁有2000行1200列的整數)。用例4. 讀.xlsx文件的整個表(表有1個分頁,頁有2000行1200列的整數)。用例5. 寫.xls文件的整個表(表有5個分頁,每個分頁有2000行1200列的整數)。用例6. 寫.xlsx文件的整個表(表有5個分頁,每個分頁有2000行1200列的整數)。用例7.