日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA EXCEL API(jxl)简介

發(fā)布時間:2024/1/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA EXCEL API(jxl)简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?Java?Excel是一開放源碼項目,通過它Java開發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。使用該?API Windows操作系統(tǒng)也可以通過純Java應用來處理Excel數(shù)據(jù)表。因為是使用Java編寫的,所以我們在Web應用中可以通過 JSP?Servlet來調(diào)用API實現(xiàn)對Excel數(shù)據(jù)表的訪問。

提供以下功能:

????*?Excel?95 97 2000等格式的文件中讀取數(shù)據(jù);
????* ?讀取Excel公式(可以讀取Excel?97以后的公式);
????* ?生成Excel數(shù)據(jù)表(格式為Excel?97 );
????* ?支持字體、數(shù)字、日期的格式化;
????* ?支持單元格的陰影操作,以及顏色操作;
????* ?修改已經(jīng)存在的數(shù)據(jù)表;
????* ?能夠讀取圖表信息?

1.應用示例:
包括從Excel讀取數(shù)據(jù),生成新的Excel,以及修改Excel

package common.util;import jxl. * ; import jxl.format.UnderlineStyle; import jxl.write. * ; import jxl.write.Number; import jxl.write.Boolean;import java.io. * ;/** * Created by IntelliJ IDEA.* User: xl* Date: 2005-7-17* Time: 9:33:22* To change this template use File | Settings | File Templates.*/ public class ExcelHandle {public ExcelHandle(){}/** * 讀取Excel** @param filePath*/ public static void readExcel(String filePath){try {InputStream is = new FileInputStream(filePath);Workbook rwb = Workbook.getWorkbook(is);// Sheet st = rwb.getSheet("0")這里有兩種方法獲取sheet表,1為名字,而為下標,從0開始Sheet st = rwb.getSheet( " original " );Cell c00 = st.getCell( 0 , 0 );// 通用的獲取cell值的方式,返回字符串String strc00 = c00.getContents();// 獲得cell具體類型值的方式if (c00.getType() == CellType.LABEL){LabelCell labelc00 = (LabelCell)c00;strc00 = labelc00.getString();}// 輸出System.out.println(strc00);// 關閉rwb.close();}catch (Exception e){e.printStackTrace();}}/** * 輸出Excel** @param os*/ public static void writeExcel(OutputStream os){try {/** * 只能通過API提供的工廠方法來創(chuàng)建Workbook,而不能使用WritableWorkbook的構(gòu)造函數(shù),* 因為類WritableWorkbook的構(gòu)造函數(shù)為protected類型* method(1)直接從目標文件中讀取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));* method(2)如下實例所示 將WritableWorkbook直接寫入到輸出流*/ WritableWorkbook wwb = Workbook.createWorkbook(os);// 創(chuàng)建Excel工作表 指定名稱和位置WritableSheet ws = wwb.createSheet( " Test Sheet 1 " , 0 );// **************往工作表中添加數(shù)據(jù)*****************// 1.添加Label對象Label label = new Label( 0 , 0 , " this is a label test " );ws.addCell(label);// 添加帶有字型Formatting對象WritableFont wf = new WritableFont(WritableFont.TIMES, 18 ,WritableFont.BOLD, true );WritableCellFormat wcf = new WritableCellFormat(wf);Label labelcf = new Label( 1 , 0 , " this is a label test " ,wcf);ws.addCell(labelcf);// 添加帶有字體顏色的Formatting對象WritableFont wfc = new WritableFont(WritableFont.ARIAL, 10 ,WritableFont.NO_BOLD, false ,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);WritableCellFormat wcfFC = new WritableCellFormat(wfc);Label labelCF = new Label( 1 , 0 , " This is a Label Cell " ,wcfFC);ws.addCell(labelCF);// 2.添加Number對象Number labelN = new Number( 0 , 1 , 3.1415926 );ws.addCell(labelN);// 添加帶有formatting的Number對象NumberFormat nf = new NumberFormat( " #.## " );WritableCellFormat wcfN = new WritableCellFormat(nf);Number labelNF = new jxl.write.Number( 1 , 1 , 3.1415926 ,wcfN);ws.addCell(labelNF);// 3.添加Boolean對象Boolean labelB = new jxl.write.Boolean( 0 , 2 , false );ws.addCell(labelB);// 4.添加DateTime對象jxl.write.DateTime labelDT = new jxl.write.DateTime( 0 , 3 , new java.util.Date());ws.addCell(labelDT);// 添加帶有formatting的DateFormat對象DateFormat df = new DateFormat( " dd MM yyyy hh:mm:ss " );WritableCellFormat wcfDF = new WritableCellFormat(df);DateTime labelDTF = new DateTime( 1 , 3 , new java.util.Date(),wcfDF);ws.addCell(labelDTF);// 添加圖片對象,jxl只支持png格式圖片F(xiàn)ile image = new File( " f:\2.png " );WritableImage wimage = new WritableImage( 0 , 1 , 2 , 2 ,image); // 0,1分別代表x,y.2,2代表寬和高占的單元格數(shù)ws.addImage(wimage);// 寫入工作表wwb.write();wwb.close();}catch (Exception e){e.printStackTrace();}}/** * 拷貝后,進行修改,其中file1為被copy對象,file2為修改后創(chuàng)建的對象* 盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去,* 以使單元格的內(nèi)容以不同的形式表現(xiàn)* @param file1* @param file2*/ public static void modifyExcel(File file1,File file2){try {Workbook rwb = Workbook.getWorkbook(file1);WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb); // copy WritableSheet ws = wwb.getSheet( 0 );WritableCell wc = ws.getWritableCell( 0 , 0 );// 判斷單元格的類型,做出相應的轉(zhuǎn)換if (wc.getType == CellType.LABEL){Label label = (Label)wc;label.setString( " The value has been modified " );}wwb.write();wwb.close();rwb.close();}catch (Exception e){e.printStackTrace();}}// 測試public static void main(String[] args){try {// 讀ExcelExcelHandle.readExcel( " f:/testRead.xls " );// 輸出ExcelFile fileWrite = new File( " f:/testWrite.xls " );fileWrite.createNewFile();OutputStream os = new FileOutputStream(fileWrite);ExcelHandle.writeExcel(os);// 修改ExcelExcelHandle.modifyExcel( new file( "" ), new File( "" ));}catch (Exception e){e.printStackTrace();}} }

2.jsp中做相關測試,創(chuàng)建一個writeExcel.jsp

<% response.reset(); // 清除Buffer response.setContentType( " application/vnd.ms-excel " ); File fileWrite = new File( " f:/testWrite.xls " ); fileWrite.createNewFile(); new FileOutputStream(fileWrite); ExcelHandle.writeExcel( new FileOutputStream(fileWrite)); %>


IE中瀏覽writeExcel.jsp就可以動態(tài)生成Excel文檔了,其中response.setContentType?(" application/vnd.ms-excel" );語句必須要,才能確保不亂碼,在jsp中輸入<% @page?contentType?= " application/vnd.ms-excel;charset=GBK " %> 不行。

總結(jié)

以上是生活随笔為你收集整理的JAVA EXCEL API(jxl)简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。