jxl通過Java操作Excel表

jxl概念
jxl是一套純Java的API,它不依賴於某個系統只要有虛擬機就可以跑起來,支持生成95-2000的標準格式
支持字體,數字,日期操作,能夠修飾單元格屬性支持圖像和圖表,這些功能在這個領域算是挺強大了。

搭建環境
將下載好的文件解壓得到jxl.jar,放入maven中加載就可以使用啦。

jxl的一些基本操作
1.1創建文件
製作一個工作表實現效果如下:

//生成Excel的類
import java.io.*;
import jxl.*;
import jxl.write.*;
public class CreateXLS
{
public static void main(String args[])
{
try
{
//打開文件
WritableWorkbook book=
Workbook.createWorkbook(new File(“測試.xls”));
//生成名爲“第一頁”的工作表,參數0表示這是第一頁
WritableSheet sheet=book.createSheet(“第一頁”,0);
//在Label對象的構造子中指名單元格位置是第一列第一行(0,0)
//以及單元格內容爲test
Label label=new Label(0,0,”test”);
//將定義好的單元格添加到工作表中
sheet.addCell(label);
/*生成一個保存數字的單元格
必須使用Number的完整包路徑,否則有語法歧義
單元格位置是第二列,第一行,值爲789.123*/
jxl.write.Number number = new jxl.write.Number(1,0,789.123);
sheet.addCell(number);
//寫入數據並關閉文件
book.write();
book.close();
}catch(Exception e)
{
System.out.println(e);
}
}
}
編譯執行後,會在當前位置產生一個Excel文件。

1.2讀取文件:
讀取一個工作表實現效果如下:

//讀取Excel的類
import java.io.*;
import jxl.*;
public class ReadXLS
{
public static void main(String args[])
{
try
{
Workbook book=
Workbook.getWorkbook(new File(“測試.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);
}
}
}
程序執行結果:test

1.3修改文件
修改一個工作表實現效果如下:

//修改Excel的類,添加一個工作表
import java.io.*;
import jxl.*;
import jxl.write.*;
public class UpdateXLS
{
public static void main(String args[])
{
try
{
//創建只讀的 Excel 工作薄的對象副本
Workbook wb=Workbook.getWorkbook(new File(“Source.xls”));
// 創建真實寫入的 Excel 工作薄對象
WritableWorkbook book=
Workbook.createWorkbook(new File(“Target.xls”),wb);
//修改文本內容:例修改sheet2中cell B3的label內容
WritableSheet sheet2 = book.getSheet(1);
WritableCell cell = sheet2.getWritableCell(1, 2);
if (cell.getType() == CellType.LABEL)
{
Label l = (Label) cell;
l.setString("modified cell");
}
//修改文本格式:例修改sheet2中cell C5的Number的格式
WritableSheet sheet2 = book.getSheet(1);
WritableCell cell = sheet2.getWritableCell(2, 4);
NumberFormat fivedps = new NumberFormat("#.#####");
WritableCellFormat cellFormat = new WritableCellFormat(fivedps);
cell.setFormat(cellFormat);
//添加一個工作表
WritableSheet sheet=book.createSheet(“第二頁”,1);
sheet.addCell(new Label(0,0,”第二頁的測試數據”));
book.write();
book.close();
}catch(Exception e)
{
System.out.println(e);
}
}
}

1.4操作圖片

public static void write()throws Exception{
WritableWorkbook wwb=Workbook.createWorkbook(new File("c:/1.xls"));
WritableSheet ws=wwb.createSheet("Test Sheet 1",0);
File file=new File("C:\\jbproject\\PVS\\WebRoot\\weekhit\\1109496996281.png");
WritableImage image=new WritableImage(1, 4, 6, 18,file);////前兩位是起始格,後兩位是圖片佔多少個
//格,並非是位置
ws.addImage(image);
wwb.write();
wwb.close();
}

序列化操作

程序代碼:sql = "select * from tablename";
rs = stmt.executeQuery(sql);
//新建Excel文件
String filePath=request.getRealPath("aaa.xls");
File myFilePath=new File(filePath);
if(!myFilePath.exists())
myFilePath.createNewFile();
FileWriter resultFile=new FileWriter(myFilePath);
PrintWriter myFile=new PrintWriter(resultFile);
resultFile.close();
//用JXL向新建的文件中添加內容
OutputStream outf = new FileOutputStream(filePath);
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(outf);
jxl.write.WritableSheet ws = wwb.createSheet("sheettest", 0);
int i=0;
int j=0;
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(new Label(k,0,rs.getMetaData().getColumnName(k+1)));
}
while(rs.next()){
out.println(rs.getMetaData().getColumnCount());
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(new Label(k,j+i+1,rs.getString(k+1)));
}
i++;
}
wwb.write();
wwb.close();
}catch(Exception e){e.printStackTrace();}
finally{
rs.close();
conn.close();
}
response.sendRedirect("aaa.xls");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章