生活随笔
收集整理的這篇文章主要介紹了
JAVA EXCEL API(jxl)简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?Java?Excel是一開放源碼項目,通過它Java開發人員可以讀取Excel文件的內容、創建新的Excel文件、更新已經存在的Excel文件。使用該?API非 Windows操作系統也可以通過純Java應用來處理Excel數據表。因為是使用Java編寫的,所以我們在Web應用中可以通過 JSP、?Servlet來調用API實現對Excel數據表的訪問。
提供以下功能:
????*?從Excel?95 、97 、2000等格式的文件中讀取數據;
????* ?讀取Excel公式(可以讀取Excel?97以后的公式);
????* ?生成Excel數據表(格式為Excel?97 );
????* ?支持字體、數字、日期的格式化;
????* ?支持單元格的陰影操作,以及顏色操作;
????* ?修改已經存在的數據表;
????* ?能夠讀取圖表信息?
1.應用示例:
包括從Excel讀取數據,生成新的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提供的工廠方法來創建Workbook,而不能使用WritableWorkbook的構造函數,* 因為類WritableWorkbook的構造函數為protected類型* method(1)直接從目標文件中讀取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));* method(2)如下實例所示 將WritableWorkbook直接寫入到輸出流*/ WritableWorkbook wwb = Workbook.createWorkbook(os);// 創建Excel工作表 指定名稱和位置WritableSheet ws = wwb.createSheet( " Test Sheet 1 " , 0 );// **************往工作表中添加數據*****************// 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格式圖片File image = new File( " f:\2.png " );WritableImage wimage = new WritableImage( 0 , 1 , 2 , 2 ,image); // 0,1分別代表x,y.2,2代表寬和高占的單元格數ws.addImage(wimage);// 寫入工作表wwb.write();wwb.close();}catch (Exception e){e.printStackTrace();}}/** * 拷貝后,進行修改,其中file1為被copy對象,file2為修改后創建的對象* 盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去,* 以使單元格的內容以不同的形式表現* @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 );// 判斷單元格的類型,做出相應的轉換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中做相關測試,創建一個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就可以動態生成Excel文檔了,其中response.setContentType?(" application/vnd.ms-excel" );語句必須要,才能確保不亂碼,在jsp中輸入<% @page?contentType?= " application/vnd.ms-excel;charset=GBK " %> 不行。
總結
以上是生活随笔為你收集整理的JAVA EXCEL API(jxl)简介的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。