亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用JAVA通過JXL(JExcel)動態生成Excel文件 轉載至臺灣某博客

2019-11-17 04:17:45
字體:
來源:轉載
供稿:網友

上次談過了使用iText產生PDF檔,這次換成來談談使用JExcel來產生EXCEL檔的方法。

首先,先到他的SourceForge主頁面download相關的API檔案。
http://sourceforge.net/PRojects/jexcelapi/

http://www.andykhan.com/jexcelapi/download.html
當然,他也是OpenSource的元件。

下列為其Tutorial教學:
http://www.andykhan.com/jexcelapi/tutorial.html

一切就緒後,那就準備上路了。

 

下載下來的壓縮檔解開後,可以找到jxl.jar,先將此檔案加入你的Classpath中吧!

1. 先建立Workbook
也就是整份的Excel檔案,可指定檔名。
Workbook workbook = Workbook.getWorkbook(new File("test.xls"));

2. 建立Sheet
也就是每個Excel檔案下面可以跳tag的sheet表。
Sheet sheet = workbook.createSheet("我的Excel表", 0);
第一個參數是sheet name,第二個參數是第幾張sheet,當然index是由0開始算。

3. 建立字型
WritableFont chFont11w = new WritableFont(WritableFont.TIMES, 11);
chFont11w.setColour(Colour.WHITE);
先建立一個WritableFont的instance,其constructor的第一個參數是指定字型,第二個是字型大小。
其中字型的部份,可以使用WritableFont所提供預設的一堆static常數來指定,
也可以直接輸入string,比如打"標楷體",到時產生的字型就會依照你所指定的來顯示。

而setColour是指定此字型的顏色,這個部份就麻煩。
(由colour這個字來看,很顯然的JExcel應是英國相關的人開發的:P  反正總之不會是美國)

顏色為什麼麻煩呢?在JExcel裡面,Colour class並不提供public constructor讓user自己指定RGB的顏色,
所以你只能從Colour中一堆的static常數顏色來指定,之前為了這個問題還研究了一下他的原始碼,
果然是不行,他的constructor是protected的,就連繼承之後雖然可以指定rgb顏色,但是仍然沒有作用。

(後來我看了一下Excel,發現原來這是因為Excel的標準調色盤就那些顏色
不像Word一樣可以讓使用者自訂顏色的關係)

查API doc就可以看到,他提供的顏色有:
static Colour AQUA            
static Colour AUTOMATIC            
static Colour BLACK            
static Colour BLUE            
static Colour BLUE_GREY            
static Colour BLUE2            
static Colour BRIGHT_GREEN            
static Colour BROWN            
static Colour CORAL            
static Colour DARK_BLUE            
static Colour DARK_BLUE2            
static Colour DARK_GREEN            
static Colour DARK_PURPLE            
static Colour DARK_RED            
static Colour DARK_RED2            
static Colour DARK_TEAL            
static Colour DARK_YELLOW            
static Colour DEFAULT_BACKGROUND            
static Colour DEFAULT_BACKGROUND1            
static Colour GOLD            
static Colour GRAY_25            
static Colour GRAY_50            
static Colour GRAY_80            
static Colour GREEN            
static Colour GREY_25_PERCENT            
static Colour GREY_40_PERCENT            
static Colour GREY_50_PERCENT            
static Colour GREY_80_PERCENT            
static Colour ICE_BLUE            
static Colour INDIGO            
static Colour IVORY            
static Colour LAVENDER            
static Colour LIGHT_BLUE            
static Colour LIGHT_GREEN            
static Colour LIGHT_ORANGE            
static Colour LIGHT_TURQUOISE            
static Colour LIGHT_TURQUOISE2            
static Colour LIME            
static Colour OCEAN_BLUE            
static Colour OLIVE_GREEN            
static Colour ORANGE            
static Colour PALE_BLUE            
static Colour PALETTE_BLACK            
static Colour PERIWINKLE            
static Colour PINK            
static Colour PINK2            
static Colour PLUM            
static Colour PLUM2            
static Colour RED            
static Colour ROSE            
static Colour SEA_GREEN            
static Colour SKY_BLUE            
static Colour TAN            
static Colour TEAL            
static Colour TEAL2            
static Colour TURQOISE2            
static Colour TURQUOISE            
static Colour UNKNOWN            
static Colour VERY_LIGHT_YELLOW            
static Colour VIOLET            
static Colour VIOLET2            
static Colour WHITE            
static Colour YELLOW            
static Colour YELLOW2   

上面列了這麼多,哪知道哪一個真正的顏色是怎麼樣?
除非自己邊試邊換才知,這太麻煩了,我寫了一隻程式把所有的顏色都印出來:


好了,但問題來了,上面提供的顏色如果對比較龜毛的人而言(比如我...),
一定是不足使用的,但如剛剛上述說的,Colour不提供自訂顏色的功能,
後來找了老半天文件,終於找到一個可以用的方式,
就是在workbook中,提供了一個setColourRGB的method,
但這個method並不是設定新的顏色,而是可以把上述提供的顏色重新覆寫其RGB設定值,
這個方法雖然不是挺好,但是終於有救了!

所以你就找個顏色來開刀,例如:
workbook.setColourRGB(Colour.DARK_GREEN, 0xDB, 0xF4, 0x8E);
我把DARK_GREEN的RGB改寫成#DBF48E (0x表示16進位)
(你要什麼顏色而有什麼16進位色碼,很多方法可以取得,比如:photoshop、Dreamweaver等)
這樣一來,之後再使用Colour.DARK_GREEN,就會變成我們想要的顏色了。

4. 產生儲存格Cell的格式
  WritableCellFormat cellFormat1 = new WritableCellFormat ();
  cellFormat1.setFont(chFont11w);
  cellFormat1.setBackground(Colour.DARK_GREEN);
  cellFormat1.setAlignment(Alignment.CENTRE);
  cellFormat1.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.GRAY_80);
這裡呢,要先產生你要的cell的格式,例如指定字型setFont,把我們剛剛產生的白色11大小的TIMES指定進去,
設定背景setBackground,把我們剛剛覆寫掉的DARK_GREEN指定進去,
指定對齊方式setAlignment為置中,
以及設定此cell的上下左右(Border.ALL)的框線以及顏色。

5. 增加一個文字儲存格Cell
Label label = new Label(2, 3, "我是rexmen", cellFormat1);
sheet.addCell(label); 
此constructor的第一個參數是產生的儲存格的x的位置,2表示第3欄(index從0開始算)
第二個參數就是y的位置,3表示第4列。
用Excel的講法來說,就是「C4」那一格。
而第三個就是輸入的文字,而第四格就把我們剛剛產生的cell的format指定進去。

最後再把此label加入sheet中。使用addCell method。

6. 寫入及結束文件
把該作的都作完後,別忘了close掉文件,
workbook.write();
workbook.close();
先使用write()寫入後,再用colose關閉。
這樣就大功告成囉!最基本的JExcel就完成了。
其他的功能啦,插入圖片啦、試算的公式啦、有的沒的自己有空再試了!


其他:
若是在jsp上要讓User download這個動態產生的excel檔,
要用Servlet RequestDispatcher的方式,
若沒有設定正確表頭,導過去的檔案會會在browser上看到的是亂碥,
要記得設定 response.setContentType("application/vnd.ms-excel");
再導到正確的excel檔案位置
RequestDispatcher view = request.getRequestDispatcher("test.xls");
view.forward(request, response);
如此以來,在網址列上不會show出 test.xls 的檔名 (會按照你在web.xml裡設定的servlet對應mapping檔名),
而且可以正確的在browser裡看到Excel的內容。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区久久精品| 色噜噜狠狠色综合网图区| 91久久综合亚洲鲁鲁五月天| 国产精品自产拍高潮在线观看| 亚洲国产日韩欧美综合久久| 午夜精品国产精品大乳美女| 欧美视频在线观看免费| 国产精品视频免费观看www| 狠狠躁夜夜躁人人躁婷婷91| 成人激情视频在线观看| 久久伊人精品天天| 国产精品日韩在线| 亚洲国产精品yw在线观看| 国产91色在线|免| 亚洲最新av网址| 久久国产视频网站| 成人黄色大片在线免费观看| 美日韩在线视频| 青青久久aⅴ北条麻妃| 性金发美女69hd大尺寸| 国产视频精品一区二区三区| 一色桃子一区二区| 亚洲男子天堂网| 另类图片亚洲另类| 久久视频中文字幕| 91高潮在线观看| 久久久久久久影视| 国产精品美女主播在线观看纯欲| 69**夜色精品国产69乱| 日韩av影院在线观看| 亚洲一区美女视频在线观看免费| 一本一本久久a久久精品综合小说| 久久99视频免费| 九色成人免费视频| 久久久999精品| 国产欧美精品va在线观看| 久久精品视频免费播放| 国产精品久久久久久久久久久久| 亚洲精品中文字幕女同| 久久精品一区中文字幕| 欧美精品免费在线| 久久久爽爽爽美女图片| 亚洲国产精品人人爽夜夜爽| 日本人成精品视频在线| 欧美精品18videosex性欧美| 这里只有精品在线观看| 日韩av资源在线播放| 久久91亚洲精品中文字幕| 久久人人看视频| 亚洲精品国产拍免费91在线| 91在线中文字幕| 国产91在线播放| 国内伊人久久久久久网站视频| 国产精品av免费在线观看| 国产精品va在线播放我和闺蜜| 成人黄色中文字幕| 亚洲精品一区久久久久久| 欧洲一区二区视频| 国内精品久久久久久| 国模吧一区二区三区| 北条麻妃在线一区二区| 国外成人性视频| 色偷偷噜噜噜亚洲男人| 欧美三级欧美成人高清www| 欧美午夜激情视频| 国产精品精品视频一区二区三区| 亚洲国产欧美久久| 国产精品视频在线观看| 97超视频免费观看| 亚洲第一精品自拍| 国产91色在线|| 78m国产成人精品视频| 亚洲色图狂野欧美| 亚洲成av人乱码色午夜| 亚洲欧美一区二区激情| 国模私拍一区二区三区| www.国产精品一二区| 久久香蕉国产线看观看网| 亚洲综合一区二区不卡| 欧洲美女免费图片一区| 国产亚洲精品成人av久久ww| 国产盗摄xxxx视频xxx69| 亚洲人在线观看| 一区二区三区四区在线观看视频| 亚洲视频在线观看| 中文字幕亚洲自拍| 欧美精品做受xxx性少妇| 亚洲女成人图区| 亚洲精品中文字幕有码专区| 欧美激情三级免费| 日韩人体视频一二区| 成人写真福利网| 色偷偷av亚洲男人的天堂| 久久天天躁狠狠躁老女人| 欧美亚洲日本黄色| 欧美亚洲国产视频小说| 成人在线视频福利| 久久久久久久久电影| 中文字幕视频在线免费欧美日韩综合在线看| 国产91在线播放精品91| 久久综合亚洲社区| 欧美激情一区二区三级高清视频| 欧美限制级电影在线观看| 国产精品国模在线| 国产精品久久久久久久app| 欧美肥臀大乳一区二区免费视频| 中文字幕精品www乱入免费视频| 成人午夜一级二级三级| 日韩少妇与小伙激情| 国产999在线| 一区二区三区视频在线| 日韩一区二区三区国产| 亚洲女人天堂视频| 最新69国产成人精品视频免费| 欧美成人免费网| 永久免费看mv网站入口亚洲| 国色天香2019中文字幕在线观看| 欧美激情视频播放| 亲爱的老师9免费观看全集电视剧| 亚洲成人黄色在线观看| 日韩av免费在线播放| 中文字幕国产精品久久| 久久国产精品久久国产精品| 最近更新的2019中文字幕| 亚洲国产欧美一区二区丝袜黑人| 亚洲性视频网址| 精品久久久久久久久久久| 国产精品午夜国产小视频| 中文字幕在线精品| 国产精品美女av| 日韩av免费看| 国产精品毛片a∨一区二区三区|国| 亚洲欧美日韩图片| 91免费版网站入口| 美女福利视频一区| 91av免费观看91av精品在线| 2019亚洲男人天堂| 欧美激情亚洲精品| 国产欧美日韩专区发布| 亚洲社区在线观看| 亚洲伦理中文字幕| 亚洲男人天堂网站| 在线视频国产日韩| xvideos亚洲| 久久久久中文字幕2018| 色噜噜国产精品视频一区二区| 久久免费福利视频| 日韩精品免费电影| 在线看日韩欧美| 精品偷拍各种wc美女嘘嘘| 欧美电影免费看| 欧洲亚洲免费视频| 国产欧美亚洲精品| 国产精品69精品一区二区三区| 综合国产在线观看| 亚洲精品美女在线观看| 91美女片黄在线观看游戏| 日本一区二区三区在线播放| 国产精品丝袜久久久久久不卡| 成人免费直播live| 国产精品极品尤物在线观看| 精品国偷自产在线| 亚洲成人动漫在线播放| 亲爱的老师9免费观看全集电视剧|