羅馬不是一天建成的,要寫好工具類必須要有扎實(shí)的功底和豐富的經(jīng)驗(yàn)。
創(chuàng)新互聯(lián)從2013年成立,先為任縣等服務(wù)建站,任縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為任縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
寫工具類首先要考慮工具類得功能,要能滿足基本的要求,但又不能有過多使用次數(shù)不高的方法。其次,要考慮工具類得通用性及易用性,工具類的使用方法不能太復(fù)雜。最后,不能以工具類為中心來寫程序,即所寫程序不能為了使用工具類而放棄它本來的結(jié)構(gòu)和方法,而是應(yīng)該考慮是不是可以寫一個更好的工具類來提供程序使用。
工具類必須經(jīng)過很多次的修改最終才能成為想要的工具類。
JAVA 通常有兩種方法來操作Excel,分別是POI和JExcelAPI,而且都是開源的。POI是Apace公司開發(fā)的,對中文的支持比較弱一些;而JExcelAPI是韓國公司開發(fā)的,不僅對中文的支持好,而且由于是純JAVA編寫的,所以可以跨平臺操作。本文介紹的也是JExcelAPI的使用方法。
1、環(huán)境配置
如下網(wǎng)址,可以下載到API:
下載完成的包解壓之后,可以得到如下幾個重要的文件:
(1)jxl.jar —— JExcelAPI 函數(shù)庫;
(2)docs —— 幫助文檔;
(3)src —— 源碼文件夾;
將jxl.jar復(fù)制到%JAVA_HOME%\jre\ext\文件夾下面,在CLASSPATH變量里面添加"%JAVA_HOME%\jre\ext",然后就可以調(diào)用JExcelAPI了。如果出現(xiàn)編譯報錯“找不到j(luò)ava.jxl包”,則可能是沒有設(shè)置成功。這時,如果有Eclipse開發(fā)工具,可以在"Build Path"中添加"External Library",找到j(luò)xl.jar的路徑,然后就能編譯成功了。
2、Excel基礎(chǔ)操作實(shí)例
(1) 創(chuàng)建Excel文件
/**讀取Excel文件的內(nèi)容
* @param file 待讀取的文件
* @return // 生成Excel的類 */
package createxls;
import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class CreateXLS {
public static void main(String args[]) {
try {
// 打開文件
WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
// 生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁
WritableSheet sheet = book.createSheet( " 第一頁 " , 0 );
// 在Label對象的構(gòu)造子中指名單元格位置是第一列第一行(0,0)
// 以及單元格內(nèi)容為test
Label label = new Label( 0 , 0 , " test " );
// 將定義好的單元格添加到工作表中
sheet.addCell(label);
// 寫入數(shù)據(jù)并關(guān)閉文件
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
(2)讀Excel文件
package readxls;
//讀取Excel的類
import java.io.File;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class ReadXLS {
public static void main(String args[]) {
try {
Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
// 獲得第一個工作表對象
Sheet sheet = book.getSheet( 0 );
// 得到第一列第一行的單元格
Cell cell1 = sheet.getCell( 0 , 0 );
String result = cell1.getContents();
System.out.println(result);
book.close();
} catch (Exception e) {
//System.out.println(e);
e.printStackTrace();
}
}
}
(3)合并單元格、格式化單元格等
//合并單元格并在單元格中輸入內(nèi)容
package additionalproperty;
import java.io.*;
import jxl.write.*;
import jxl.*;
public class MergeCells {
public static void main(String [] args){
try{
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
WritableSheet sheet = book.createSheet("第一頁", 0);
sheet.mergeCells(3, 3, 6, 6); //合并單元格
//設(shè)置填充內(nèi)容的格式
WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
WritableCellFormat format = new WritableCellFormat(font);
format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中
format.setBackground(jxl.format.Colour.BLUE); //背景顏色和樣式
format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //邊框樣式
Label label = new Label(3, 3, "合并", format); //添加內(nèi)容
sheet.addCell(label);
book.write();
book.close();
}//end try
catch (Exception e){
e.printStackTrace();
}
}
}
(4)添加圖片
JExcelAPI對圖片的操作有限:它不能生成圖表、圖片和宏,但是復(fù)制工作表時,這些信息可以保留復(fù)制。而且當(dāng)向工作表中添加圖片時,只能支持PNG格式的圖片。
//在工作表中添加圖片
package handleimage;
import java.io.*;
import jxl.*;
import jxl.write.*;
public class CreateImage {
public static void main(String [] args){
try{
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
WritableSheet sheet = book.createSheet("第一頁", 0);
WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定義圖片格式
new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
sheet.addImage(image); //添加圖片
book.write();
book.close();
}//end try
catch (Exception e){ e.printStackTrace(); }
}
}
提交的時候用SimpleDateFormat類轉(zhuǎn)換格式:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
sdf.format(要轉(zhuǎn)換的Date類型對象);
注意format里面的參數(shù)一定是Date類型的,如果不是請先用sdf.parse(字符串類型值);轉(zhuǎn)換好后在format也行。