本文主要給出java/Excel應用的一個實用程序,供大家研究討論.
近兩天研究查看了下Java+Excel的方法
首先需要到網上下個jxl.jar的包
我寫的練習代碼如下:(注意里面的圖片替換成自己的就可以了)
import java.io.*;
import java.util.Random;
import java.util.Date;
import jxl.*;
import jxl.format.UnderlineStyle;
import jxl.write.*;
import jxl.write.Number;
import jxl.write.Boolean;
public class CreateXL
{
public CreateXL()
{
}
public static void main(String[] args)
{
//讀Excel
//CreateXL.readExcel("d:/abc.xls");
//創建新的Excel
CreateXL.writeExcel("d:/new.xls");
//更新Excel
CreateXL.updateExcel("d:/new.xls");
}
//jxl暫時不提供修改已經存在的數據表,這里通過一個小辦法來達到這個目的,不適合大型數據更新!
//這里是通過覆蓋原文件來更新的.
public static void updateExcel(String filePath)
{
try
{
Workbook rwb = Workbook.getWorkbook(new File(filePath));
WritableWorkbook wwb = Workbook.createWorkbook(new File("d:/new.xls"),rwb);//copy
WritableSheet ws = wwb.getSheet(0);
WritableCell wc = ws.getWritableCell(0,0);
//判斷單元格的類型,做出相應的轉換
Label label = (Label)wc;
label.setString("The value has been modified");
wwb.write();
wwb.close();
rwb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void writeExcel(String filePath)
{
try
{
//創建工作薄
WritableWorkbook wwb = Workbook.createWorkbook(new File(filePath));
//創建工作表
WritableSheet ws = wwb.createSheet("Sheet1",0);
//System.out.println("create ok!");
//添加標簽文本
Random rnd=new Random((new Date()).getTime());
int forNumber=rnd.nextInt(100);
for(int i=0;i<forNumber;i++)
{
ws.addCell(new Number(rnd.nextInt(50),rnd.nextInt(50),rnd.nextInt(1000)));
}
//添加圖片(注意此處jxl暫時只支持png格式的圖片)
//0,1分別代表x,y 2,5代表寬和高占的單元格數
ws.addImage(new WritableImage(0,1,2,5,new File("png\\cs.png")));
wwb.write();
wwb.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
public static void readExcel(String filePath)
{
/**
*后續考慮問題,比如Excel里面的圖片以及其他數據類型的讀取
**/
try
{
InputStream is=new FileInputStream(filePath);
//聲名一個工作薄
Workbook rwb = Workbook.getWorkbook(is);
//獲得工作薄的個數
//rwb.getNumberOfSheets();
//在Excel文檔中,張工作表的缺省索引是0
Sheet st = rwb.getSheet("Sheet1");
//通用的獲取cell值的方式,getCell(int column, int row) 行和列
int Rows=st.getRows();
int Cols=st.getColumns();
System.out.println("當前工作表的名字:"+st.getName());
System.out.println("總行數:"+Rows);
System.out.println("總列數:"+Cols);
Cell c;
for(int i=0;i<Cols;++i)
{
for(int j=0;j<Rows;++j)
{
//getCell(Col,Row)獲得單元格的值
System.out.print((st.getCell(i,j)).getContents()+"\t");
}
System.out.print("\n");
}
//操作完成時,關閉對象,釋放占用的內存空間
rwb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}