java導出excle的工具類(java實現導出excel工具類)

本文目錄一覽:

如何用java完成Excel快速的導入導出

導出

現在我們定義好對象了,如何導出Excel –ExcelExportUtil 這個導出工具類

public void testExportExcel_1() throws Exception {

ExportParams params = new ExportParams(“0328課程表”, “日期:2016-03-28”, “六年一班”);

Workbook workbook = ExcelExportUtil.exportExcel(params, CourseEntity.class,courseList);

FileOutputStream fos = new FileOutputStream(“D:/excel/0328課程表.xls”);

workbook.write(fos);

fos.close();

}

我們只要把我們定義好的對象的class傳進去,以及對象的集合,Easypoi就可以返回一個Excel的workbook了,同時Easypoi是兼容03版本office和07版本office,你要穿個參數指定下類型及可以了,是不是不是比我們自己寫代碼簡單多了,最少只需要2行代碼就可以完成我們的office操作了

導入

我們把導出寫完了,導入是不是很複雜呢,也不是,導入也是同樣簡單,定時實體和上面定義的方式一樣

導入是用導入工具類

ImportParams params = new ImportParams();

params.setHeadRows(2);

ListCourseEntity list = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);

定義下表頭的參數,然後把流傳入進去就可以得到我們的對象列表是不是so easy.趕快來使用吧

java導出excel

java導出Excel java 代碼 /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.axon.fable.sams.view.action; import java.io.IOException; import java.io.OutputStream; import java.util.List; import javax.serv … java導出Excel例舉方式 方法一:導出Excel數據的插件jexcelapi 程序實例如下: public void exportClassroom(OutputStream os) throws PaikeException { try { WritableWorkbook wbook = Workbook.createWorkbook(os); //建立excel文件 WritableSheet wsheet = wbook.createSheet(“教室信息表”, 0); //工作表名稱 //設置Excel字體 WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); WritableCellFormat titleFormat = new WritableCellFormat(wfont); String[] title = { “教室名”, “容 量”, “類 型”, “其他說明” }; //設置Excel表頭 for (int i = 0; i title.length; i++) { Label excelTitle = new Label(i, 0, title[i], titleFormat); wsheet.addCell(excelTitle); } int c = 1; //用於循環時Excel的行號 ClassroomService cs = new ClassroomService(); List list = cs.findAllClassroom(); //這個是從數據庫中取得要導出的數據 Iterator it = list.iterator(); while (it.hasNext()) { ClassroomDTO crdto = (ClassroomDTO) it.next(); Label content1 = new Label(0, c, crdto.getRoomname()); Label content2 = new Label(1, c, crdto.getCapicity().toString()); Label content3 = new Label(2, c, crdto.getRoomTypeId() .toString()); Label content4 = new Label(3, c, crdto.getRemark()); wsheet.addCell(content1); wsheet.addCell(content2); wsheet.addCell(content3); wsheet.addCell(content4); c++; } wbook.write(); //寫入文件 wbook.close(); os.close(); } catch (Exception e) { throw new PaikeException(“導出文件出錯”); } } 方法二:直接用Java代碼實現導出Excel報表 /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */

java怎麼生成excel文件工具類

package beans.excel;

import java.io.IOException;

import java.io.OutputStream;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

public class SimpleExcelWrite {

    public void createExcel(OutputStream os) throws WriteException,IOException{

        //創建工作薄

        WritableWorkbook workbook = Workbook.createWorkbook(os);

        //創建新的一頁

        WritableSheet sheet = workbook.createSheet(“First Sheet”,0);

        //創建要顯示的內容,創建一個單元格,第一個參數為列坐標,第二個參數為行坐標,第三個參數為內容

        Label xuexiao = new Label(0,0,”學校”);

        sheet.addCell(xuexiao);

        Label zhuanye = new Label(1,0,”專業”);

        sheet.addCell(zhuanye);

        Label jingzhengli = new Label(2,0,”專業競爭力”);

        sheet.addCell(jingzhengli);

        

        Label qinghua = new Label(0,1,”清華大學”);

        sheet.addCell(qinghua);

        Label jisuanji = new Label(1,1,”計算機專業”);

        sheet.addCell(jisuanji);

        Label gao = new Label(2,1,”高”);

        sheet.addCell(gao);

        

        Label beida = new Label(0,2,”北京大學”);

        sheet.addCell(beida);

        Label falv = new Label(1,2,”法律專業”);

        sheet.addCell(falv);

        Label zhong = new Label(2,2,”中”);

        sheet.addCell(zhong);

        

        Label ligong = new Label(0,3,”北京理工大學”);

        sheet.addCell(ligong);

        Label hangkong = new Label(1,3,”航空專業”);

        sheet.addCell(hangkong);

        Label di = new Label(2,3,”低”);

        sheet.addCell(di);

        

        //把創建的內容寫入到輸出流中,並關閉輸出流

        workbook.write();

        workbook.close();

        os.close();

    }

    

}

java導出excel有什麼好的工具嗎

JAVA 通常有兩種方法來操作Excel,分別是POI和JExcelAPI,而且都是開源的。POI是Apace公司開發的,對中文的支持比較弱一些;而JExcelAPI是韓國公司開發的,不僅對中文的支持好,而且由於是純JAVA編寫的,所以可以跨平台操作。本文介紹的也是JExcelAPI的使用方法。

java導出數據到excel的幾種方法的比較

Excel的兩種導出入門方法(JAVA與JS)

最近在做一個小項目作為練手,其中使用到了導出到Excel表格,一開始做的是使用JAVA的POI導出的,但因為我的數據是爬蟲爬出來的,數據暫時並不保存在數據庫或後台,所以直接顯示在HTML的table,需要下載時又要將數據傳回後台然後生成Excel文件,最後再從服務器下載到本地,過程幾度經過網絡傳輸,感覺比較耗時與浪費性能,於是想着在HTML中的Table直接導到Excel中節約資源

JAVA導出EXCEL(.xls)

導出Excel用的插件是apache的poi.jar,maven地址如下

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi/artifactId

version3.17/version/dependency

1. 簡單應用

先來個簡化無樣式的Excel導出,由於我的數據存在JSON中,所以形參是JSONArray,朋友們根據自己的實際數據類型(Map,List,Set等)傳入即可 ,代碼如下

/**

* 創建excel並填入數據

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 數據頭

* @param body 主體數據

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {        //創建一個excel工作簿

HSSFWorkbook workbook = new HSSFWorkbook();        //創建一個sheet工作表

HSSFSheet sheet = workbook.createSheet(“學生信息”);

//創建第0行表頭,再在這行里在創建單元格,並賦值

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;        for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));//設置值

}

//將主體數據填入Excel中

for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));//設置值

}

}        return workbook;

}

創建好Excel對象並填好值後(就是得到workbook),就是將這個對象以文件流的形式輸出到本地上去,代碼如下

/**

* 文件輸出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

至此Excel的導出其實已經做完了。

2. 添加樣式後導出

但通常這並不能滿足我們的需求,因為通常是需要設置Excel的一些樣式的,如字體、居中等等,設置單元格樣式主要用到這個類(HSSFCellStyle)

HSSFCellStyle cellStyle = workbook.createCellStyle();

現在說說HSSFCellStyle都能幹些什麼

HSSFCellStyle cellStyle = workbook.createCellStyle();//創建單元格樣式對象1.設置字體

HSSFFont font = workbook.createFont();  //font.setFontHeight((short)12);//這個設置字體會很大

font.setFontHeightInPoints((short)12);//這才是我們平常在Excel設置字體的值

font.setFontName(“黑體”);//字體:宋體、華文行楷等等

cellStyle.setFont(font);//將該字體設置進去2.設置對齊方式

cellStyle.setAlignment(horizontalAlignment);//horizontalAlignment參考下面給出的參數

//以下是最常用的三種對齊分別是居中,居左,居右,其餘的寫代碼的時候按提示工具查看即可

HorizontalAlignment.CENTER

HorizontalAlignment.LEFT

HorizontalAlignment.RIGHT3.設置邊框

cellStyle.setBorderBottom(border); // 下邊框

cellStyle.setBorderLeft(border);// 左邊框

cellStyle.setBorderTop(border);// 上邊框

cellStyle.setBorderRight(border);// 右邊框

//border的常用參數如下

BorderStyle.NONE 無邊框

BorderStyle.THIN 細邊框

BorderStyle.MEDIUM 中等粗邊框

BorderStyle.THICK 粗邊框//其餘的我也描述不清是什麼形狀,有興趣的到時可以直接測試

在經過一系列的添加樣式之後,最後就會給單元格設置樣式

cell.setCellStyle(cellStyle);

3. 自動調整列寬

sheet.autoSizeColumn(i);//i為第幾列,需要全文都單元格居中的話,需要遍歷所有的列數

4. 完整的案例

public class ExcelUtils {    /**

* 創建excel並填入數據

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 數據頭

* @param body 主體數據

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet(“學生信息”);

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;

HSSFCellStyle cellStyle = workbook.createCellStyle();

setBorderStyle(cellStyle, BorderStyle.THIN);

cellStyle.setFont(setFontStyle(workbook, “黑體”, (short) 14));

cellStyle.setAlignment(HorizontalAlignment.CENTER);

for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));

cell.setCellStyle(cellStyle);

}

HSSFCellStyle cellStyle2 = workbook.createCellStyle();

setBorderStyle(cellStyle2, BorderStyle.THIN);

cellStyle2.setFont(setFontStyle(workbook, “宋體”, (short) 12));

cellStyle2.setAlignment(HorizontalAlignment.CENTER);        for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));

cell.setCellStyle(cellStyle2);

}

}        for (int i = 0, isize = head.size(); i isize; i++) {

sheet.autoSizeColumn(i);

}        return workbook;

}    /**

* 文件輸出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}    /**

* 設置字體樣式

* @author LiQuanhui

* @date 2017年11月24日 下午3:27:03

* @param workbook 工作簿

* @param name 字體類型

* @param height 字體大小

* @return HSSFFont

*/

private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints(height);

font.setFontName(name);        return font;

}    /**

* 設置單元格樣式

* @author LiQuanhui

* @date 2017年11月24日 下午3:26:24

* @param workbook 工作簿

* @param border border樣式

*/

private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {

cellStyle.setBorderBottom(border); // 下邊框

cellStyle.setBorderLeft(border);// 左邊框

cellStyle.setBorderTop(border);// 上邊框

cellStyle.setBorderRight(border);// 右邊框

}

}

POI的功能其實還是很強大的,這裡只介紹了Excel的一丁點皮毛給入門的查看,如果想對Excel進行更多的設置可以查看下面的這篇文章,有着大量的使用說明。

空谷幽瀾的POI使用詳解

JS導出EXCEL(.xls)

java的Excel導出提供了強大的功能,但也對服務器造成了一定資源消耗,若能使用客戶端的資源那真是太好了

1. 簡單應用

JS的導出Excel非常簡單,只需要引用Jquery和tableExport.js並設置一個屬性即可

script src=”%=basePath%/static/js/tableExport.js” type=”text/javascript”/scriptscript type=”text/javascript”

function exportExcelWithJS(){    //獲取要導出Excel的表格對象並設置tableExport方法,設置導出類型type為excel

$(‘#tableId’).tableExport({      type:’excel’

});

}/scriptbutton class=”btn btn-primary”  type=”button” style=”float: right;” onclick=”exportExcelWithJS()”下載本表格/button

JS的導出就完成了,是不是特別簡單

2. 進階應用

但上面僅僅是個簡單的全表無樣式的導出

這tableExport.js還有一些其他功能,忽略行,忽略列,設置樣式等,屬性如下

script type=”text/javascript”

function exportExcelWithJS(){    //獲取要導出Excel的表格對象並設置tableExport方法,設置導出類型type為excel

$(‘#tableId’).tableExport({      type:’excel’,//導出為excel

fileName:’2017工資表’,//文件名

worksheetName:’11月工資’,//sheet表的名字

ignoreColumn:[0,1,2],//忽略的列,從0開始算

ignoreRow:[2,4,5],//忽略的行,從0開始算

excelstyles:[‘text-align’]//使用樣式,不用填值只寫屬性,值讀取的是html中的

});

}/script

如上既是JS的進階導出,操作簡單,容易上手

但有個弊端就是分頁的情況下,只能導出分頁出的數據,畢竟這就是導出HTML內TABLE有的東西,數據在數據庫或後台的也就無能為力,所以這個適合的是無分頁的TABLE導出

3. 額外說明

tableExport.js是gitHub上的hhurz大牛的一個開源項目,需要下載該JS的可以點擊鏈接進入gitHub下載或在我的百度網盤下載 密碼:oafu

tableExport.js不僅僅是個導出Excel的JS,他還可以導出CSV、DOC、JSON、PDF、PNG、SQL、TSV、TXT、XLS (Excel 2000 HTML format)、XLSX (Excel 2007 Office Open XML format)、XML (Excel 2003 XML Spreadsheet format)、XML (Raw xml)多種格式,具體使用可以參考hhurz的使用介紹

本人在之前找了好幾個導出Excel的都有各種各樣的問題(亂碼,無響應,無樣式),這個是目前找到最好的一個了,能解決亂碼問題,能有樣式,非常強大

java操作excel有多少個工具類

JAVA 通常有兩種方法來操作Excel,分別是POI和JExcelAPI,而且都是開源的。POI是Apace公司開發的,對中文的支持比較弱一些;而JExcelAPI是韓國公司開發的,不僅對中文的支持好,而且由於是純JAVA編寫的,所以可以跨平台操作。本文介紹的也是JExcelAPI的使用方法。

1、環境配置

如下網址,可以下載到API:

下載完成的包解壓之後,可以得到如下幾個重要的文件:

(1)jxl.jar —— JExcelAPI 函數庫;

(2)docs —— 幫助文檔;

(3)src —— 源碼文件夾;

將jxl.jar複製到%JAVA_HOME%\jre\ext\文件夾下面,在CLASSPATH變量裏面添加”%JAVA_HOME%\jre\ext”,然後就可以調用JExcelAPI了。如果出現編譯報錯「找不到java.jxl包」,則可能是沒有設置成功。這時,如果有Eclipse開發工具,可以在”Build Path”中添加”External Library”,找到jxl.jar的路徑,然後就能編譯成功了。

2、Excel基礎操作實例

(1) 創建Excel文件

/**讀取Excel文件的內容

* @param file 待讀取的文件

* @return // 生成Excel的類 */

package createxls;

import java.io.File;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

public class CreateXLS {

public static void main(String args[]) {

try {

// 打開文件

WritableWorkbook book = Workbook.createWorkbook( new File( ” test.xls ” ));

// 生成名為「第一頁」的工作表,參數0表示這是第一頁

WritableSheet sheet = book.createSheet( ” 第一頁 ” , 0 );

// 在Label對象的構造子中指名單元格位置是第一列第一行(0,0)

// 以及單元格內容為test

Label label = new Label( 0 , 0 , ” test ” );

// 將定義好的單元格添加到工作表中

sheet.addCell(label);

// 寫入數據並關閉文件

book.write();

book.close();

} catch (Exception e) {

System.out.println(e);

}

}

}

(2)讀Excel文件

package readxls;

//讀取Excel的類

import java.io.File;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

public class ReadXLS {

public static void main(String args[]) {

try {

Workbook book = Workbook.getWorkbook( new File( ” test.xls ” ));

// 獲得第一個工作表對象

Sheet sheet = book.getSheet( 0 );

// 得到第一列第一行的單元格

Cell cell1 = sheet.getCell( 0 , 0 );

String result = cell1.getContents();

System.out.println(result);

book.close();

} catch (Exception e) {

//System.out.println(e);

e.printStackTrace();

}

}

}

(3)合併單元格、格式化單元格等

//合併單元格並在單元格中輸入內容

package additionalproperty;

import java.io.*;

import jxl.write.*;

import jxl.*;

public class MergeCells {

public static void main(String [] args){

try{

WritableWorkbook book = Workbook.createWorkbook(new File(“test.xls”));

WritableSheet sheet = book.createSheet(“第一頁”, 0);

sheet.mergeCells(3, 3, 6, 6); //合併單元格

//設置填充內容的格式

WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);

WritableCellFormat format = new WritableCellFormat(font);

format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中

format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中

format.setBackground(jxl.format.Colour.BLUE); //背景顏色和樣式

format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //邊框樣式

Label label = new Label(3, 3, “合併”, format); //添加內容

sheet.addCell(label);

book.write();

book.close();

}//end try

catch (Exception e){

e.printStackTrace();

}

}

}

(4)添加圖片

JExcelAPI對圖片的操作有限:它不能生成圖表、圖片和宏,但是複製工作表時,這些信息可以保留複製。而且當向工作表中添加圖片時,只能支持PNG格式的圖片。

//在工作表中添加圖片

package handleimage;

import java.io.*;

import jxl.*;

import jxl.write.*;

public class CreateImage {

public static void main(String [] args){

try{

WritableWorkbook book = Workbook.createWorkbook(new File(“test.xls”));

WritableSheet sheet = book.createSheet(“第一頁”, 0);

WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定義圖片格式

new File(“C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG”));

sheet.addImage(image); //添加圖片

book.write();

book.close();

}//end try

catch (Exception e){ e.printStackTrace(); }

}

}

原創文章,作者:Y1S4C,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129624.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
Y1S4C的頭像Y1S4C
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論