java導(dǎo)入Excel示例
生成Excel的類:
public static void main(String args[]) {
public void show(){
try {
//打開文件
WritableWorkbook book = Workbook.createWorkbook(new File( "test.xls " ));
//生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁
WritableSheet w0 = book.createSheet("第一頁 ",0);
WritableSheet w1 = book.createSheet("第二頁 ",1);
WritableSheet w2 = book.createSheet("第三頁 ",2);
//在Label對象的構(gòu)造子中指名單元格位置是第一列第一行(0,0),以及單元格內(nèi)容為test
//第一個參數(shù)表示列,第二個參數(shù)表示行,第三個參數(shù)表示數(shù)據(jù)
Label label = new Label( 0 , 0 , " test " );
//將定義好的單元格添加到工作表中
w0.addCell(label);
//生成一個保存數(shù)字的單元格 必須使用Number的完整包路徑,否則有語法歧義 單元格位置是第二列,第一行,值為789.123
jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );
w0.addCell(number);
//這種方式是以文本字符的形式將數(shù)值存儲到xls文件中的。
w1.addCell(new Label(0,0,"12"));
w1.addCell(new Label(1,0,"21"));
w1.addCell(new Label(2,0,"123"));
//第二列,第一行==========存儲數(shù)字必須有Number的實(shí)例是
w1.addCell(new Number(1,0,123));
//第二列,第五行
w2.addCell(new Number(1,4,123));
//寫入數(shù)據(jù)并關(guān)閉文件
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
讀取Excel的類:
public class ReadExcel {
public static void main(String args[]) {
try {
Workbook book = Workbook.getWorkbook(new File("f:\\test.xls"));
//獲得第一個工作表對象
Sheet sheet = book.getSheet(0);
//得到第一列第一行的單元格
Cell cell1 = sheet.getCell(0,0);
String result = cell1.getContents();
System.out.println(result);
//得到整個第一列
Cell [] ces = sheet.getColumn(0);
for (int i = 0; i < ces.length; i++) {
System.err.println(ces[i].getContents());
}
//得到整個第一行
Cell [] crs = sheet.getRow(0);
for (int i = 0; i < crs.length; i++) {
System.err.println(crs[i].getContents());
}
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
//修改Excel的類
public class UpdateExcel {
public static void main(String args[]) {
try {
//Excel獲得文件
Workbook wb = Workbook.getWorkbook(new File("f:\\test.xls" ));
//打開一個文件的副本,并且指定數(shù)據(jù)寫回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File("f:\\test.xls"),wb);
//添加一個工作表
//第一個參數(shù):新添加的頁面名稱。2表示它的位置,從零開始,2表示第三頁
WritableSheet sheet = book.createSheet("第二頁 ",2);
sheet.addCell(new Label(0,0," 第二頁的測試數(shù)據(jù) " ));
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
其他操作:
其他操作
一、 數(shù)據(jù)格式化
在Excel中不涉及復(fù)雜的數(shù)據(jù)類型,能夠比較好的處理字串、數(shù)字和日期已經(jīng)能夠滿足一般的應(yīng)用。
1、 字串格式化
字符串的格式化涉及到的是字體、粗細(xì)、字號等元素,這些功能主要由WritableFont和WritableCellFormat類來負(fù)責(zé)。
假設(shè)我們在生成一個含有字串的單元格時,使用如下語句,為方便敘述,我們?yōu)槊恳恍忻罴恿司幪枺?br />
WritableFont font1 = new WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD); ①
WritableCellFormat format1 = new WritableCellFormat(font1); ②
Label label = new Label( 0 , 0 ,”data 4 test”,format1) ③
其中
①指定了字串格式:字體為TIMES,字號16,加粗顯示。WritableFont有非常豐富的 構(gòu)造子,供不同情況下使用,jExcelAPI的java-doc中有詳細(xì)列表,這里不再列出。
②處代碼使用了WritableCellFormat類,這個類非常重要,通過它可以指定單元格的各種屬性,后面的單元格格式化中會有更多描述。
③處使用了Label類的構(gòu)造子,指定了字串被賦予那種格式。在WritableCellFormat類中,還有一個很重要的方法是指定數(shù)據(jù)的對齊方式。
比如針對我們 上面的實(shí)例,可以指定:
//把水平對齊方式指定為居中
format1.setAlignment(jxl.format.Alignment.CENTRE);
//把垂直對齊方式指定為居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
二、單元格操作
Excel中很重要的一部分是對單元格的操作,比如行高、列寬、單元格合并等,所幸jExcelAPI提供了這些支持。這些操作相對比較簡單,下面只介紹一下相關(guān)的API。
1、 合并單元格
WritableSheet.mergeCells( int m, int n, int p, int q);
//作用是從(m,n)到(p,q)的單元格全部合并,比如:
WritableSheet sheet = book.createSheet(“第一頁”, 0 );
//合并第一列第一行到第六列第一行的所有單元格
sheet.mergeCells( 0 , 0 , 5 , 0 );
合并既可以是橫向的,也可以是縱向的。合并后的單元格不能再次進(jìn)行合并,否則會觸發(fā)異常。
2、 行高和列寬
WritableSheet.setRowView(int i,int height);
//作用是指定第i+1行的高度,比如:
//將第一行的高度設(shè)為200
sheet.setRowView(0,200);
WritableSheet.setColumnView(int i,int width);
//作用是指定第i+1列的寬度,比如:
//將第一列的寬度設(shè)為30
sheet.setColumnView(0,30);
jExcelAPI還有其他的一些功能,比如插入圖片等,這里就不再一一介紹,讀者可以自己探索。
其中:如果讀一個excel,需要知道它有多少行和多少列,如下操作:
Workbook book = Workbook.getWorkbook(new File("測試1.xls"));
//獲得第一個工作表對象
Sheet sheet = book.getSheet(0);
//得到第一列第一行的單元格
int columnum = sheet.getColumns();//得到列數(shù)
int rownum = sheet.getRows();//得到行數(shù)
System.out.println(columnum);
System.out.println(rownum);
for(int i = 0;i < rownum;i ++ )//循環(huán)進(jìn)行讀寫
{
for(int j = 0;j < columnum;j ++) {
Cell cell1 = sheet.getCell(j, i);
String result = cell1.getContents();
System.out.print(result);
System.out.print( " \t " );
}
System.out.println();
}
book.close();
posted on 2010-06-25 17:49 何方 閱讀(524) 評論(0) 編輯 收藏 所屬分類: java