<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    javainthinking

    XL的個性空間和java學習之旅

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      13 隨筆 :: 13 文章 :: 20 評論 :: 1 Trackbacks

    參考文章:http://www-128.ibm.com/developerworks/cn/java/l-javaExcel/index.html
    作了一些相應的擴充(讀取圖片等)

    JAVA EXCEL API簡介

    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
            {
                //讀Excel
                ExcelHandle.readExcel("f:/testRead.xls");
                //輸出Excel
                File fileWrite = new File("f:/testWrite.xls");
                fileWrite.createNewFile();
                OutputStream os = new FileOutputStream(fileWrite);
                ExcelHandle.writeExcel(os);
                //修改Excel
                ExcelHandle.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"%>不行。

    posted on 2005-07-18 10:39 XL的個性空間和java學習之旅 閱讀(36153) 評論(2)  編輯  收藏 所屬分類: Excel的相關操作

    評論

    # 利用JAVA操作EXCEL文件(JAVA EXCEL API)[TrackBack] 2005-10-23 17:52 naive1010
    Ping Back來自:blog.csdn.net
    [引用提示]naive1010引用了該文章, 地址: http://blog.csdn.net/naive1010/archive/2005/10/23/514123.aspx  回復  更多評論
      

    # re: 利用JAVA操作EXCEL文件(JAVA EXCEL API) 2007-08-22 09:25 xx
    為什么不能導入Workbook等,我用的是eclipse5.2,jdk1.5  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲区视频在线观看| 亚洲一区二区精品视频| 亚洲激情视频网站| 亚洲精品在线免费观看| 亚洲图片中文字幕| 成年人在线免费看视频| 亚洲精品无码aⅴ中文字幕蜜桃| 97无码免费人妻超级碰碰夜夜| 亚洲天堂福利视频| 浮力影院第一页小视频国产在线观看免费 | 成年私人影院免费视频网站| 最新亚洲精品国偷自产在线| 国产成人免费片在线视频观看| 狼色精品人妻在线视频免费| 亚洲无线码在线一区观看| 黄网站免费在线观看| 亚洲资源在线观看| 无人在线观看完整免费版视频| 亚洲AV成人无码久久WWW| 国产成人亚洲精品91专区手机| 暖暖在线视频免费视频| 亚洲人成网站日本片| 日本免费无遮挡吸乳视频电影| 午夜在线免费视频| 亚洲AV综合色区无码一区爱AV| 香蕉97超级碰碰碰免费公| 美女扒开尿口给男人爽免费视频| 狠狠综合久久综合88亚洲| 亚州免费一级毛片| 欧洲乱码伦视频免费国产| 亚洲a一级免费视频| 成人黄动漫画免费网站视频| 一区二区3区免费视频| 久久久亚洲欧洲日产国码二区| 免费无码又爽又刺激毛片| 成人自慰女黄网站免费大全| 亚洲一区二区三区不卡在线播放| 亚洲国产av一区二区三区| 99久久国产免费-99久久国产免费| 大桥未久亚洲无av码在线| 亚洲av无码一区二区三区乱子伦|