西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開(kāi)發(fā)其它知識(shí) → JXL開(kāi)發(fā)Excel文檔中文教程

JXL開(kāi)發(fā)Excel文檔中文教程

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2011/1/9 16:20:46字體大。A-A+

作者:佚名點(diǎn)擊:2330次評(píng)論:0次標(biāo)簽: Excel

  • 類型:辦公軟件大小:72.1M語(yǔ)言:中文 評(píng)分:.9
  • 標(biāo)簽:
立即下載
 Excel開(kāi)發(fā)文檔
1 開(kāi)發(fā)調(diào)研
1.1 需求描述
MS的電子表格(Excel)是Office的重要成員,是保存統(tǒng)計(jì)數(shù)據(jù)的一種常用格式。作為辦公文檔,勢(shì)必要涉及到的電子文檔的交換,Excel是一種在企業(yè)中非常通用的文件格式,打印和管理也比較方便。在一個(gè)Java應(yīng)用中,將一部分?jǐn)?shù)據(jù)生成Excel格式,是與其他系統(tǒng)無(wú)縫連接的重要手段。
1.2 Excel開(kāi)發(fā)常用開(kāi)源工具
在開(kāi)源世界中,有兩套比較有影響的API可供使用,一個(gè)是POI,一個(gè)是jExcelAPI。
1.3 比較開(kāi)源工具的優(yōu)缺點(diǎn)
1.3.1 Jxl優(yōu)缺點(diǎn)
Jxl特征有如下描述:
● 支持Excel 95-2000的所有版本
● 生成Excel 2000標(biāo)準(zhǔn)格式
● 支持字體、數(shù)字、日期操作
● 能夠修飾單元格屬性
● 支持圖像和圖表
應(yīng)該說(shuō)以上功能已經(jīng)能夠大致滿足我們的需要。最關(guān)鍵的是這套API是純Java的,并不依賴Windows系統(tǒng),即使運(yùn)行在Linux下,它同樣能夠正確的處理Excel文件。另外需要說(shuō)明的是,這套API對(duì)圖形和圖表的支持很有限,而且僅僅識(shí)別PNG格式。
1.3.2 Poi優(yōu)缺點(diǎn)
Jakarta 的 POI Project 與 Java Excel API 在開(kāi)源世界中可以說(shuō)是并駕齊驅(qū),但是也各有優(yōu)劣,poi在某些細(xì)節(jié)有些小Bug并且不支持寫(xiě)入圖片(poi其實(shí)可以寫(xiě)入圖片,不過(guò)沒(méi)有jxl來(lái)的方便,比較麻煩),其他方面都挺不錯(cuò)的;而JXL提供了對(duì)圖片的支持(但是僅僅支持png格式的圖片),問(wèn)題就是對(duì)公式支持不是很好,但還是提供了簡(jiǎn)單的公式讀取支持。因此你的項(xiàng)目中要選用什么樣的第三方插件為完全由你的應(yīng)用來(lái)決定。如果你的軟件是跟財(cái)務(wù)有相當(dāng)?shù)年P(guān)系的話,建議采用 POI Project,就我所在目前的項(xiàng)目來(lái)說(shuō)由于用不到計(jì)算公式,而且很可能需要導(dǎo)出圖片,因此,我的選擇是 JXL 。

1.4 性能比較以及最終選擇
1.4.1 內(nèi)存消耗:(來(lái)自網(wǎng)絡(luò))
談下JVM虛擬機(jī)內(nèi)存消耗的情況.
數(shù)據(jù)量3000條數(shù)據(jù),每條60列.JVM虛擬機(jī)內(nèi)存大小64M.
使用POI:運(yùn)行到2800條左右就報(bào)內(nèi)存溢出.
使用JXL:3000條全部出來(lái),并且內(nèi)存還有21M的空間.
可想而知,在對(duì)內(nèi)存的消耗方面差距還是挺大的.
也許是由于JXL在對(duì)資源回收利用方面做的還挺不錯(cuò)的。
1.4.2 速度效率(讀取excel數(shù)據(jù))(來(lái)自網(wǎng)絡(luò))
文件 POI加載耗時(shí) POI總耗時(shí) JXL加載耗時(shí) Jxl總耗時(shí)
文件大小57KB 1172 ms 1172 ms 1265 ms 2250 ms
文件大小652KB 2297 ms 2313 ms 4406 ms 9750 ms
文件大小2.24M 3109ms 3140ms 16313ms 37453ms

1.4.3 寫(xiě)excel速度效率
jxl插入數(shù)據(jù)比poi速度要快
1.4.4 功能對(duì)比
相比提供的功能的話,JXL相對(duì)弱了點(diǎn).所以如果要實(shí)現(xiàn)的功能比較復(fù)雜的情況下可以考慮使用POI,但如果只想生成一些大數(shù)據(jù)量可以考慮使用JXL,或者CSV也是一個(gè)不錯(cuò)的選擇,不過(guò)CSV并不是真正的excel,然而jxl插入數(shù)據(jù)比poi速度要快。

2 Jxl開(kāi)發(fā)指南
2.1 介紹
jxl操作excel包括對(duì)象Workbook,Sheet ,Cell。
一個(gè)excel就對(duì)應(yīng)一個(gè)Workbook對(duì)象,
一個(gè)Workbook可以有多個(gè)Sheet對(duì)象
一個(gè)Sheet對(duì)象可以有多個(gè)Cell對(duì)象
2.2 讀取excel操作
通過(guò)Workbook,Sheet ,Cell這三個(gè)對(duì)象我們就可以實(shí)現(xiàn)Excel文件的讀取工作。我們先想想一下讀取步驟,不管是什么樣的Excel操作框架必定都要經(jīng)歷
1、 選取Excel文件得到工作薄
2、 選擇工作表
3、 選擇Cell
4、 讀取信息
2.2.1 讀取工作薄
選取Excel文件得到工作薄Workbook
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
2.2.2 讀取工作表
通過(guò)Workbook的getSheet方法選擇第一個(gè)工作表(從0開(kāi)始)
Sheet sheet = workbook.getSheet(0);
也可以通過(guò)工作的名稱來(lái)得到Sheet
2.2.3 讀取單元格
通過(guò)Sheet的getCell方法選擇位置為C2的單元格(兩個(gè)參數(shù)都從0開(kāi)始)
Cell c2 = sheet.getCell(2,1);

2.2.3.1 讀取單元格的值
2.2.3.2 通過(guò)Cell的getContents方法
把單元格中的信息以字符的形式讀取出來(lái)String stringc2 = c2.getContents();
2.2.3.3 Cell提供了一個(gè)getType方法
能夠返回單元格的類型信息,同時(shí)JXL提供了一個(gè)CellType類用來(lái)預(yù)設(shè)Excel中的類型信息,而且JXL提供了一些Cell類的子類用來(lái)分別用來(lái)表示各種類型的單元格,如LabelCell,NumberCell,DateCell分別表示字符、數(shù)值、日期類型的單元格
if (c2.getType() == CellType. LABEL)
{
LabelCell nc = (LabelCell) c2;
String number b2 = nc. getString();
}
if (c2.getType() == CellType. DATE)
{
DateCell nc = (DateCell) c2;
Date number b2 = nc. getDate();
}

if (c2.getType() == CellType.NUMBER)
{
NumberCell nc = (NumberCell) c2;
double number b2 = nc.getValue();
}
API提供了以下基本類型,與Excel的數(shù)據(jù)格式相對(duì)應(yīng),如下圖所示

2.2.4 以釋放資源:workbook.close()
當(dāng)你完成對(duì)Excel電子表格數(shù)據(jù)的處理后,一定要使用close()方法來(lái)關(guān)閉先前創(chuàng)建的對(duì)象,以釋放讀取數(shù)據(jù)表的過(guò)程中所占用的內(nèi)存空間,在讀取大量數(shù)據(jù)時(shí)顯得尤為重要
最后不要忘記關(guān)閉workbook以釋放資源:workbook.close();
2.3 寫(xiě)excel操作
通過(guò)WritableWorkbook,WritableSheet,Label這三個(gè)對(duì)象我們就可以實(shí)現(xiàn)Excel文件的插入工作。我們先想想一下插入,不管是什么樣的Excel操作框架必定都要經(jīng)歷
1、 創(chuàng)建Exce工作薄
2、 創(chuàng)建工作表
3、 創(chuàng)建單元格

2.3.1 創(chuàng)建工作薄
API提供了兩種方式來(lái)處理可寫(xiě)入的輸出流,一種是直接生成本地文件,如果文件名不帶全路徑的話,缺省的文件會(huì)定位在當(dāng)前目錄,如果文件名帶有全路徑的話,則生成的Excel文件則會(huì)定位在相應(yīng)的目錄;另外一種是將Excel對(duì)象直接寫(xiě)入到輸出流,例如:用戶通過(guò)瀏覽器來(lái)訪問(wèn)Web服務(wù)器,如果HTTP頭設(shè)置正確的話,瀏覽器自動(dòng)調(diào)用客戶端的Excel應(yīng)用程序,來(lái)顯示動(dòng)態(tài)生成的Excel電子表格。
2.3.1.1 創(chuàng)建可寫(xiě)入的Excel工作薄
WritableWorkbook
wwb = Workbook.createWorkbook(new File(targetfile));
2.3.1.2 將WritableWorkbook直接寫(xiě)入到輸出流
OutputStream os = new FileOutputStream(targetfile);
WritableWorkbook wwb = Workbook.createWorkbook(os);
2.3.2 創(chuàng)建工作表
WritableSheet ws = wwb.createSheet("通訊錄", 0);//創(chuàng)建sheet
2.3.3 創(chuàng)建單元格
2.3.3.1 添加文本類單元格
Label labelC = new Label(0, 0, "This is a Label cell");
2.3.3.2 添加帶有字型Formatting的對(duì)象
WritableFont wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
WritableCellFormat wcfF = new WritableCellFormat(wf);
labelCF = new Label(1, 0, "This is a Label Cell", wcfF);
ws.addCell(labelCF);
2.3.3.3 添加帶有字體顏色Formatting的對(duì)象
WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD, false,
UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
Label labelCFC = new Label(1, 0, "This is a Label Cell", wcfFC);
ws.addCell(labelCF);
2.3.3.4 添加Number對(duì)象
Number labelN = new jxl.write.Number(0, 1, 3.1415926);
ws.addCell(labelN);
2.3.3.5 添加帶有formatting的Number對(duì)象
NumberFormat nf = new NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
Number labelNF = new Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);
2.3.3.6 添加Boolean對(duì)象
Boolean labelB = new jxl.write.Boolean(0, 2, false);
ws.addCell(labelB);
2.3.3.7 添加DateTime對(duì)象
DateTime labelDT = new DateTime(0, 3, new java.util.Date());
ws.addCell(labelDT);
2.3.3.8 添加帶有formatting的DateFormat對(duì)象
DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
WritableCellFormat wcfDF = new WritableCellFormat(df);
DateTime labelDTF = new DateTime(1, 3, new Date(), wcfDF);
ws.addCell(labelDTF);
2.3.3.9 添加公式單元格
Fornual formual = new Formual(0,11,”Sum(A1:A9)”);
wrb.addCell(formual);
2.3.3.10 添加圖像
WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));
wrb.addImage(wrimage);
注意,API中注明只支持png文件。
2.3.4 合并單元格
通過(guò)writablesheet.mergeCells(int x,int y,int m,int n);來(lái)實(shí)現(xiàn)的。
表示將從第x+1列,y+1行到m+1列,n+1行合并 (四個(gè)點(diǎn)定義了兩個(gè)坐標(biāo),左上角和右下角)結(jié)果是合并了m-x+1行,n-y+1列,兩者乘積就是合并的單元格數(shù)量。
sheet.mergeCells(0, 6, 3, 8);
label = new Label(0, 6, "合并了12個(gè)單元格");
sheet.addCell(label);

2.3.5 添加單元格樣式
主要是改變單元格背景、字體、顏色等等。
WritableCellFormat wc = new WritableCellFormat();
wc.setAlignment(Alignment.CENTRE); // 設(shè)置居中
wc.setBorder(Border.ALL, BorderLineStyle.THIN); // 設(shè)置邊框線
wc.setBackground(jxl.format.Colour.RED); // 設(shè)置單元格的背景顏色
label = new Label(1, 5, "字體", wc);
sheet.addCell(label);
2.3.6 設(shè)置單元格字體
WritableFont wfont =
new WritableFont(WritableFont.createFont("楷書(shū)"), 20);
WritableCellFormat font = new WritableCellFormat(wfont);
label = new Label(2, 6, "楷書(shū)", font);
sheet.addCell(label);
2.3.7 寫(xiě)入到文件
wwb.write();// 寫(xiě)入數(shù)據(jù)
wwb.close();// 關(guān)閉文件

2.4 拷貝、更新Excel工作薄
//創(chuàng)建只讀的Excel工作薄的對(duì)象
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//創(chuàng)建可寫(xiě)入的Excel工作薄對(duì)象
WritableWorkbook wwb=Workbook.createWorkbook(new File(targetfile), rw);
//讀取第一張工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//獲得第一個(gè)單元格對(duì)象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//判斷單元格的類型, 做出相應(yīng)的轉(zhuǎn)化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//寫(xiě)入Excel對(duì)象
wwb.write();
//關(guān)閉可寫(xiě)入的Excel對(duì)象
wwb.close();
//關(guān)閉只讀的Excel對(duì)象
rw.close();
為了提高性能,在讀取工作表時(shí),與數(shù)據(jù)相關(guān)的一些輸出信息,所有的格式信息,如:字體、顏色等等,是不被處理的,因?yàn)槲覀兊哪康氖谦@得行數(shù)據(jù)的值,既使沒(méi)有了修飾,也不會(huì)對(duì)行數(shù)據(jù)的值產(chǎn)生什么影響。唯一的不利之處就是,在內(nèi)存中會(huì)同時(shí)保存兩個(gè)同樣的工作表,這樣當(dāng)工作表體積比較大時(shí),會(huì)占用相當(dāng)大的內(nèi)存,但現(xiàn)在好像內(nèi)存的大小并不是什么關(guān)鍵因素了。
一旦獲得了可寫(xiě)入的工作表對(duì)象,我們就可以對(duì)單元格對(duì)象進(jìn)行更新的操作了,在這里我們不必調(diào)用API提供的add()方法,因?yàn)閱卧褚呀?jīng)于工作表當(dāng)中,所以我們只需要調(diào)用相應(yīng)的setXXX()方法,就可以完成更新的操作了。
盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去,以使單元格的內(nèi)容以不同的形式表現(xiàn)。
新生成的工作表對(duì)象是可寫(xiě)入的,我們除了更新原有的單元格外,還可以添加新的單元格到工作表中。
最后,不要忘記調(diào)用write()方法,將更新的內(nèi)容寫(xiě)入到文件中,然后關(guān)閉工作薄對(duì)象,這里有兩個(gè)工作薄對(duì)象要關(guān)閉,一個(gè)是只讀的,另外一個(gè)是可寫(xiě)入的。

3 JXL讀寫(xiě)excel文件的例子 (來(lái)自網(wǎng)絡(luò))
3.1 實(shí)例一
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import jxl.*;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.write.Boolean;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class JXLExample {

/**
*
* @author smart *
*/
public static void main(String[] args) {
// 準(zhǔn)備設(shè)置excel工作表的標(biāo)題
String[] title = {"編號(hào)","產(chǎn)品名稱","產(chǎn)品價(jià)格","產(chǎn)品數(shù)量","生產(chǎn)日期","產(chǎn)地","是否出口"};
try {
// 獲得開(kāi)始時(shí)間
long start = System.currentTimeMillis();
// 輸出的excel的路徑
String filePath = "c:\\test.xls";
// 創(chuàng)建Excel工作薄
WritableWorkbook wwb;
// 新建立一個(gè)jxl文件,即在C盤(pán)下生成test.xls
OutputStream os = new FileOutputStream(filePath);
wwb=Workbook.createWorkbook(os);
// 添加第一個(gè)工作表并設(shè)置第一個(gè)Sheet的名字
WritableSheet sheet = wwb.createSheet("產(chǎn)品清單", 0);
Label label;
for(int i=0;i<title.length;i++){
label = new Label(i,0,title[i]);
// 將定義好的單元格添加到工作表中
sheet.addCell(label);
}
/*
* 保存數(shù)字到單元格,需要使用jxl.write.Number
* 必須使用其完整路徑,否則會(huì)出現(xiàn)錯(cuò)誤
* */
// 填充產(chǎn)品編號(hào)
jxl.write.Number number = new jxl.write.Number(0,1,20071001);
sheet.addCell(number);
// 填充產(chǎn)品名稱
label = new Label(1,1,"金鴿瓜子");
sheet.addCell(label);
/*
* 定義對(duì)于顯示金額的公共格式
* jxl會(huì)自動(dòng)實(shí)現(xiàn)四舍五入
* 例如 2.456會(huì)被格式化為2.46,2.454會(huì)被格式化為2.45
* */
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf);
// 填充產(chǎn)品價(jià)格
jxl.write.Number nb = new jxl.write.Number(2,1,2.45,wcf);
sheet.addCell(nb);
// 填充產(chǎn)品數(shù)量
jxl.write.Number numb = new jxl.write.Number(3,1,200);
sheet.addCell(numb);
/*
* 定義顯示日期的公共格式
* 如:yyyy-MM-dd hh:mm
* */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String newdate = sdf.format(new Date());
// 填充出產(chǎn)日期
label = new Label(4,1,newdate);
sheet.addCell(label);
// 填充產(chǎn)地
label = new Label(5,1,"陜西西安");
sheet.addCell(label);
/*
* 顯示布爾值
* */
jxl.write.Boolean bool = new jxl.write.Boolean(6,1,true);
sheet.addCell(bool);
/*
* 合并單元格
* 通過(guò)writablesheet.mergeCells(int x,int y,int m,int n);來(lái)實(shí)現(xiàn)的
* 表示將從第x+1列,y+1行到m+1列,n+1行合并
*
* */
sheet.mergeCells(0,3,2,3);
label = new Label(0,3,"合并了三個(gè)單元格");
sheet.addCell(label);
/*
*
* 定義公共字體格式
* 通過(guò)獲取一個(gè)字體的樣式來(lái)作為模板
* 首先通過(guò)web.getSheet(0)獲得第一個(gè)sheet
* 然后取得第一個(gè)sheet的第二列,第一行也就是"產(chǎn)品名稱"的字體
* */
CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();
WritableCellFormat wc = new WritableCellFormat();
// 設(shè)置居中
wc.setAlignment(Alignment.CENTRE);
// 設(shè)置邊框線
wc.setBorder(Border.ALL, BorderLineStyle.THIN);
// 設(shè)置單元格的背景顏色
wc.setBackground(jxl.format.Colour.RED);
label = new Label(1,5,"字體",wc);
sheet.addCell(label);
// 設(shè)置字體
WritableFont wfont=new WritableFont(WritableFont.createFont("隸書(shū)"),20);
WritableCellFormat font = new WritableCellFormat(wfont);
label = new Label(2,6,"隸書(shū)",font);
sheet.addCell(label);
// 寫(xiě)入數(shù)據(jù)
wwb.write();
// 關(guān)閉文件
wwb.close();
long end = System.currentTimeMillis();
System.out.println("----完成該操作共用的時(shí)間是:"+(end-start)/1000);
} catch (Exception e) {
System.out.println("---出現(xiàn)異常---");
e.printStackTrace();
}
}

}
3.2 實(shí)例二

package com.test;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class JexcelSample {
/**
* 寫(xiě)excel文件
*
*/
public void writeExc(File filename){
WritableWorkbook wwb = null;
try
{
wwb = Workbook.createWorkbook(filename);
}
catch (Exception e){
e.printStackTrace();
}

//創(chuàng)建Excel工作表
WritableSheet ws = wwb.createSheet("通訊錄", 0);//創(chuàng)建sheet
try {
ws.mergeCells(0, 0, 2, 1);//合并單元格(左列,左行,右列,右行)從第1行第1列到第2行第3列
Label header = new Label(0, 0, "通訊錄(191026班)", getHeader());
ws.addCell(header);//寫(xiě)入頭
Label l = new Label(0, 2, "姓名", getTitle());//第3行
ws.addCell(l);
l = new Label(1, 2, "電話", getTitle());
ws.addCell(l);
l = new Label(2, 2, "地址", getTitle());
ws.addCell(l);
l = new Label(0, 3, "小祝", getNormolCell());//第4行
ws.addCell(l);
l = new Label(1, 3, "1314***0974", getNormolCell());
ws.addCell(l);
l = new Label(2, 3, "武漢武昌", getNormolCell());
ws.addCell(l);
l = new Label(0, 4, "小施", getNormolCell());//第5行
ws.addCell(l);
l = new Label(1, 4, "1347***5057", getNormolCell());
ws.addCell(l);
l = new Label(2, 4, "武漢武昌", getNormolCell());
ws.addCell(l);
ws.setColumnView(0,20);//設(shè)置列寬
ws.setColumnView(1,20);
ws.setColumnView(2,40);
ws.setRowView(0,400);//設(shè)置行高
ws.setRowView(1,400);
ws.setRowView(2,500);
ws.setRowView(3,500);
ws.setRowView(4,500);
} catch (RowsExceededException e1) {
e1.printStackTrace();
} catch (WriteException e1) {
e1.printStackTrace();
}

//輸出流
try {
wwb.write();
} catch (IOException ex) {
// TODO 自動(dòng)生成 catch 塊
ex.printStackTrace();
}
//關(guān)閉流
try {
wwb.close();
} catch (WriteException ex) {
// TODO 自動(dòng)生成 catch 塊
ex.printStackTrace();
} catch (IOException ex) {
// TODO 自動(dòng)生成 catch 塊
ex.printStackTrace();
}
//outStream.close();
System.out.println("寫(xiě)入成功!\n");
}

public void readExc(File filename) throws BiffException, IOException{
Workbook wb = Workbook.getWorkbook(filename);
Sheet s = wb.getSheet(0);//第1個(gè)sheet
Cell c = null;
int row = s.getRows();//總行數(shù)
int col = s.getColumns();//總列數(shù)
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
c = s.getCell(j,i);
System.out.print(c.getContents()+" ");
}
System.out.println();
}
}

/**
* 設(shè)置頭的樣式
* @return
*/
public static WritableCellFormat getHeader(){
WritableFont font = new WritableFont(WritableFont.TIMES, 24 ,WritableFont.BOLD);//定義字體
try {
font.setColour(Colour.BLUE);//藍(lán)色字體
} catch (WriteException e1) {
// TODO 自動(dòng)生成 catch 塊
e1.printStackTrace();
}
WritableCellFormat format = new WritableCellFormat(font);
try {
format.setAlignment(jxl.format.Alignment.CENTRE);//左右居中
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中
format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);//黑色邊框
format.setBackground(Colour.YELLOW);//黃色背景
} catch (WriteException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
return format;
}

/**
* 設(shè)置標(biāo)題樣式
* @return
*/
public static WritableCellFormat getTitle(){
WritableFont font = new WritableFont(WritableFont.TIMES, 14);
try {
font.setColour(Colour.BLUE);//藍(lán)色字體
} catch (WriteException e1) {
// TODO 自動(dòng)生成 catch 塊
e1.printStackTrace();
}
WritableCellFormat format = new WritableCellFormat(font);

try {
format.setAlignment(jxl.format.Alignment.CENTRE);
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);
} catch (WriteException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
return format;
}

/**
* 設(shè)置其他單元格樣式
* @return
*/
public static WritableCellFormat getNormolCell(){//12號(hào)字體,上下左右居中,帶黑色邊框
WritableFont font = new WritableFont(WritableFont.TIMES, 12);
WritableCellFormat format = new WritableCellFormat(font);
try {
format.setAlignment(jxl.format.Alignment.CENTRE);
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);
} catch (WriteException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
return format;
}

public static void main(String[] args) throws IOException, BiffException{
JexcelSample js = new JexcelSample();
File f = new File("D:\\address.xls");
f.createNewFile();
js.writeExc(f);
js.readExc(f);
}
}
生成的excel表格如下:


4 jxl常用api
4.1.1 1、Workbook類提供的方法
int getNumberOfSheets() 獲取工作表的總個(gè)數(shù)
Sheet[] getSheets() 獲取數(shù)組型的工作表
Sheet getSheet(String name);//得到此對(duì)應(yīng)名稱的工作表
4.1.2 2、Sheet接口提供的方法
String getName() 獲取工作表的名稱
int getColumns() 獲取Sheet表中所包含的總列數(shù)
Cell[] getColumn(int column) 獲取某一列的所有單元格,
返回的是單元格對(duì)象數(shù)組
int getRows() 獲取Sheet表中所包含的總行數(shù)
Cell[] getRow(int row) 獲取某一行的所有單元格,返回的是單元格對(duì)象數(shù)組
Cell getCell(int column, int row)獲取指定單元格的對(duì)象引用,需要注意的是它的兩個(gè)參數(shù),第一個(gè)是列數(shù),第二個(gè)是行數(shù),這與通常的行、列組合有些不同
WritableSheet.setRowView(int i,int height); 指定第i+1行的高度
WritableSheet.setColumnView(int i,int width); 指定第i+1列的寬度
    表格軟件
    (18)表格軟件
    在日常辦公中經(jīng)常會(huì)需要用到表格軟件,一般我們常見(jiàn)的表格軟件就是了,不過(guò)只有正版系統(tǒng)中才有,而很多國(guó)人使用的都是盜版的系統(tǒng)是沒(méi)有軟件的。這里西西給大家提供了一些比較好用的表格軟件下載,包括等軟件,如果你的電腦中沒(méi)有,需要找一些好用的軟件可以來(lái)西西下載。...更多>>
    excel2007
    (11)excel2007
    這款辦公軟件大家平時(shí)都用吧,小編相信也不用做多介紹了,西西主要為大家?guī)?lái)官方原版及一些電子書(shū)快捷鍵等下載,有需要的就拿走吧官方下載說(shuō)明這個(gè)版本是官方正式版,是官方許可免費(fèi)發(fā)布的軟件,可以在您的設(shè)備上安裝和使用本軟件的任意數(shù)量的副本。小編平時(shí)也經(jīng)常用它,所以整理了一些格式的電子書(shū)分享給大家,新手可以認(rèn)真看看。官方介紹是一款老牌的辦公軟件套裝,可以實(shí)現(xiàn)辦公軟件最常用的文字表格演示等多種功能。內(nèi)存占用低...更多>>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)