1. 程式人生 > >POI 讀取excel模版並填寫資料

POI 讀取excel模版並填寫資料

POI依賴的jar包:
<org.apache.poi.version>3.10-FINAL</org.apache.poi.version>

        <!-- POI的jar包-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${org.apache.poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>${org.apache.poi.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${org.apache.poi.version}</version>
        </dependency>

java POI讀取excel模版並填寫資料程式碼:

public class ExportExcelDemo {
    private HSSFWorkbook workbook = null;
    /**
     * 顯示的匯出表的標題
     */
    private String title;
    /**
     * 匯出表的列名
     */
    private String[] rowName;

    private List<Object[]> dataList = new ArrayList<>();

    /**
     * 構造方法,傳入要匯出的資料
     *
     * @param title
     * @param rowName
     * @param dataList
     */
    public ExportExcelDemo(String title, String[] rowName, List<Object[]> dataList) {
        this.dataList = dataList;
        this.rowName = rowName;
        this.title = title;
    }


    /**
     * 判斷檔案的sheet是否存在
     * @param filePath      檔案路徑
     * @param sheetName     表格索引名
     * @return
     */
    public boolean sheetExist(String filePath,String sheetName){
        boolean flag = false;
        File file = new File(filePath);
        if(file.exists()) {    //檔案存在
            //建立workbook
            try {
                workbook = new HSSFWorkbook(new FileInputStream(file));
                //新增Worksheet(不新增sheet時生成的xls檔案開啟時會報錯)
                HSSFSheet sheet = workbook.getSheet(sheetName);
                if(sheet!=null)
                     flag = true;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }else{  //檔案不存在
            flag =false;
        }
        return flag;
    }

    /**
     *
     *(2003 xls字尾 匯出)
     * @param TODO
     * @return void 返回型別
     * @author xsw
     * @2016-12-7上午10:44:00
     */
    public static void createXLS(String importFilePath,String exportFilePath) throws IOException{
        try {
            //excel模板路徑
            File fi=new File(importFilePath);
            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));
            //讀取excel模板
            HSSFWorkbook wb = new HSSFWorkbook(fs);
            //讀取了模板內所有sheet內容
            HSSFSheet sheet = wb.getSheetAt(0);

            //如果這行沒有了,整個公式都不會有自動計算的效果的
            sheet.setForceFormulaRecalculation(true);


            //在相應的單元格進行賦值
            HSSFCell cell = sheet.getRow(11).getCell(6);//第11行 第6列
            cell.setCellValue(1);
            HSSFCell cell2 = sheet.getRow(11).getCell(7);
            cell2.setCellValue(2);
            sheet.getRow(12).getCell(6).setCellValue(12);
            sheet.getRow(12).getCell(7).setCellValue(12);
            //修改模板內容匯出新模板
            FileOutputStream out = new FileOutputStream(exportFilePath);
            wb.write(out);
            out.close();
        }catch (Exception e) {
            System.out.println("檔案讀取錯誤!");
        }

    }

    /**
     *
     *(2007 xlsx字尾 匯出)
     * @param
     * @return void 返回型別
     * @author xsw
     * @2016-12-7上午10:44:30
     */
    public static void createXLSX(String importFilePath,String exportFilePath) throws IOException{
        //excel模板路徑
        File fi=new File(importFilePath);
        InputStream in = new FileInputStream(fi);
        //讀取excel模板
        XSSFWorkbook wb = new XSSFWorkbook(in);
        //讀取了模板內所有sheet內容
        XSSFSheet sheet = wb.getSheetAt(0);

        //如果這行沒有了,整個公式都不會有自動計算的效果的
        sheet.setForceFormulaRecalculation(true);


        //在相應的單元格進行賦值
        XSSFCell cell = sheet.getRow(11).getCell(6);//第12行 第7列
        cell.setCellValue(1);
        XSSFCell cell2 = sheet.getRow(11).getCell(7);
        cell2.setCellValue(2);
        sheet.getRow(12).getCell(6).setCellValue(3);
        sheet.getRow(12).getCell(7).setCellValue(4);
        //修改模板內容匯出新模板
        FileOutputStream out = new FileOutputStream(exportFilePath);
        wb.write(out);
        out.close();
    }

    /**
     * @param @param  file
     * @param @return
     * @param @throws IOException
     * @return List<String> (excel每行拼接成List中的String)
     * @throws
     * @Title: readExcel
     * @Description: TODO(對外提供讀取excel 的方法)
     */
    public static synchronized void readExcel(String importFilePath,String exportFilePath) throws IOException {
        File file=new File(importFilePath);
        String fileName = file.getName();
        //List<String> list = new ArrayList<String>();
        //根據其名稱獲取字尾
        String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName
                .substring(fileName.lastIndexOf(".") + 1);
        if ("xls".equals(extension)) {
            read2003Excel(new FileInputStream(file),exportFilePath);
        } else if ("xlsx".equals(extension) || "xlsm".equals(extension)) {
            read2007Excel(new FileInputStream(file),exportFilePath);
        } else if ("tmp".equals(extension)) {
            read2007Excel(new FileInputStream(file),exportFilePath);
        } else {
            throw new IOException("不支援的檔案型別");
        }
    }

    public static void main(String[] args) throws IOException{
        //excle 2007
        String importFilePath= "/Users/dataDemo.xlsx";
        String exportFilePath= "/Users/test2.xlsx";
        //createXLSX(importFilePath,exportFilePath);
        readExcel(importFilePath,exportFilePath);
    }
}

相關推薦

POI 讀取excel模版填寫資料

POI依賴的jar包: <org.apache.poi.version>3.10-FINAL</org.apache.poi.version> <!-- POI的jar包--> <depe

在controller層中使用poi讀取excel表格中的資料

需求:需要對一個Excel表格中的資料,批量新增到資料庫中 1.首先在JSP頁面中可以寫出來,選擇檔案的按鈕, <!--批量匯入--> <div id="dgBatchImport" class="easyui-dialog" title="批量匯入檔案

poi 匯入Excel封裝 處理資料型別

最近正在做OA,需求需要匯入匯出EXCEL ,功能和方法使用起來挺簡單,做起來發現型別問題比較坑,自己稍微封裝了一下, 大致功能就是 通過傳入實體類的class物件和 Sheet 工作簿物件獲取 從Excel檔案中獲取,實體類集合。 excel2003的

小例子:java利用poi讀取excel資料匯入資料庫

問題描述: 資料夾下有若干excel檔案,檔名為10.教育局.xls   11.衛生院.xls     ................有很多;中間的漢字為單位名稱,需要匯入資料庫,每個單位名稱要有一個單位id匹配;每個excel中有若干個sheet頁的名字,每個名字即為科

POI讀取Excel數據保存到數據庫,反饋給用戶處理信息

equal 讀取 cor scrip name gmv prope HR 後綴      今天遇到這麽一個需求,將課程信息以Excel的形式導入數據庫,並且課程編號再數據庫中不能重復,也就是我們需要先讀取Excel提取信息之後保存到數據庫,並將處理的信息反饋給用戶。於是想

10、利用POI讀取excel資料

自動化指令碼和資料是分離的,這裡是通過POI來實現excel的資料讀取的。 以下實現的是1個excel sheet表中可以分作多個表,判斷一個表是否結束是根據空格來的。 程式碼為: package common;import java.util.ArrayList;import java.

Java使用Poi讀取Excel資料(exor)

讀取Excel使用一個小工具exor exor是一個開源專案,封裝了一些poi讀取excel的操作,可以讀取excel資料並格式化為二維結構 xlsx和xls格式都可以讀取 exor的依賴:commons-collections4-4.2、poi-3.17、poi-oo

java poi讀取excel表格資料

package com.tl.web.signup.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.i

java使用poi讀取excel表格資料工具類

package com.eyric.excel; import java.io.*; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; import

使用POI讀取Excel資料入庫

首先先新增poi的依賴 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> &l

Java使用poi讀取excel資料excel可能很大,先轉換為csv再讀取

————————————配置———————————— jdbc.properties中加入: excelUrl=/……xlsx檔案目錄路徑/ (excelUrl + “xxxx.xlsx” 為完整路徑) 匯入poi-3.16下的6個jar包,poi-3.16/l

POIEXCEL中時間格式資料讀取

      1、Excel儲存日期、時間均以數值型別進行儲存,讀取時POI先判斷是是否是數值型別,再進行判斷,判斷數值:                 HSSFCell.CELL_TYPE_NUMERIC==cell.getCellType()        2.日期

java利用poi讀取excel資料

所需的jar包: 程式碼: /** * * @param cell * 一個單元格的物件 * @return 返回該單元格相應的型別的值 */ public static Object getRightTypeCell(Ce

讀取excel檔案將其中資料轉換成指令碼資料結構

using UnityEngine; using System.Collections; using Excel; using System.IO; using System.Text; using System.Data; using System.Collections.Generic; using Sy

javaweb專案poi 讀取excel 編輯輸出

String dir =getRequestContext().getReq().getRealPath("")  + "\\downloadfile\\11.xls";                             FileInputStream fs=new

POI讀取Excel——(四)

getc string args pan mx2 edr ccm div cfm package POI; import java.io.File; import java.io.IOException; import org.apache.commons.io.Fi

java poi讀取excel

讀取excel logs format == -s code com erro style POI實現java讀取excel 1.下載POI的jar包 , 雲盤下載地址: http://pan.baidu.com/s/1jH59hdk commons-fileupload-

java用poi讀取Excel表格中的數據

stream 數據 orm xlsx 其中 type() 2.6 create 穩定 Java讀寫Excel的包是Apache POI(項目地址:http://poi.apache.org/),因此需要先獲取POI的jar包,本實驗使用的是POI 3.9穩定版。Apac

Java利用POI 讀取Excel行列數,getLastRowNum()和getLastCellNum()的區別

一般讀取行總數時,會呼叫getLastRowNum(),讀取列總數時,會呼叫getLastCellNum(),但這兩個方法的返回值有點區別。 sheet.getLastRowNum();//返回最後一行的索引,即比行總數小1 row.getLastCellNum();//返回的是最後一列

pyhon通過讀取excel的表結構資料,形成建表語句

excel中需要包含:第一列為欄位名稱,第二列為欄位型別,第三列為欄位長度,第四列為是否為主鍵利用Y/N區分 import xlrd import os def convert_type(data_type): """Normalize MySQL `data_type`"""