本文目錄一覽:
- 1、如何用java完成Excel快速的導入導出
- 2、java導出excel
- 3、java怎麼生成excel文件工具類
- 4、java導出excel有什麼好的工具嗎
- 5、java導出數據到excel的幾種方法的比較
- 6、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-hant/n/129624.html