JSP動態輸出Excel及中文亂碼的解決
|
最近在網上看到一個用java來操縱excel的open source,在weblogic上試用了一下,覺得很不錯,特此向大家推薦一下。
首先去http://www.andykhan.com/jexcelapi/index.html下載最新的JExcelApi,把jxl.jar置于你的classpath中。
寫一個javaBean,利用JExcelApi來動態生成excel文檔,我這里寫一個最簡單的,示意性的。復雜的你可能還要查詢數據庫什么的。
| ///////////////////////////Test.java/////////////////////////////////////////// package com.jagie.test; import java.io.*; import jxl.*; import jxl.write.*; import jxl.format.*; import java.util.*; import java.awt.Color; public class Test{ public static void writeExcel(OutputStream os) throws Exception { jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os); jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0); jxl.write.Label labelC = new jxl.write.Label(0, 0, "我愛中國"); ws.addCell(labelC); jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.GREEN); jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc); wcfFC.setBackground(jxl.format.Colour.RED); labelC = new jxl.write.Label(6, 0, "中國愛我",wcfFC); ws.addCell(labelC); //寫入Exel工作表 wwb.write(); //關閉Excel工作薄對象 wwb.close(); } //最好寫一個這樣的main方法來測試一下你的這個class是否寫好了。 public static void main(String[] args)throws Exception{ File f=new File("kk.xls"); f.createNewFile(); writeExcel(new FileOutputStream(f)); } } |
寫一個jsp,來利用Test這個javabean輸出excel文檔。
| ///////////////////////////test_excel.jsp////////////////////////// <%@page import="com.jagie.test.Test" %> <% response.reset(); response.setContentType("application/vnd.ms-excel"); Test.writeExcel(response.getOutputStream()); %> |
這樣就大功告成了,你用ie訪問test_excel.jsp就能在ie里面打開動態生成的excel文檔了。一點亂碼也沒有。