Hillen.chan 发表于 2013-1-15 02:16:25

java读取和写入excel

需jxl.jar包
package com.dheaven.mip.item;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.format.UnderlineStyle;import jxl.write.DateFormat;import jxl.write.DateTime;import jxl.write.Boolean;import jxl.write.Label;import jxl.write.Number;import jxl.write.NumberFormat;import jxl.write.WritableCell;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableImage;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class excelDemo {/** * Description: 读取excel文件内容 ** Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。       读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:       一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。       在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,强制转换成相应的类型,       最后调用相应的取值方法getXXX(),就可以得到确定类型的值。 */public static void readexcel(){Workbook rwb = null;   try{      InputStream is=new FileInputStream("D:/testWrite.xls");      //Workbook rwb = Workbook.getWorkbook(new File(sourcefile));         //Sheet[] sheets = rwb.getSheets();返回工作薄(Workbook)中工作表(Sheet)对象数组      //声名一个工作薄         rwb= Workbook.getWorkbook(is);      //获得工作薄的个数         rwb.getNumberOfSheets();      //既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。      Sheet st = rwb.getSheet(0);      //获取某一列的所有单元格,返回的是单元格对象数组      //Cell[] cell = rs.getColumn(0);         int rows=st.getRows();      int cols=st.getColumns();      System.out.println("当前工作表的名字:"+st.getName());      System.out.println("总行数:"+rows);      System.out.println("总列数:"+cols);      //通用的获取cell值的方式,getCell(int column, int row) 列和行,都从0开始    for(int i=0;i<rows;i++){    for(int j=0;j<cols;j++){      Cell c1=st.getCell(j,i);      System.out.println(" 内容:"+c1.getContents());    }    }    }    catch(Exception e)    {      e.printStackTrace();      System.out.println("出错了");    }finally{      rwb.close();    }}/** * Description: 写入excel文件 **/public static void writerexcel(){try   {   /*** 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,* 因为类WritableWorkbook的构造函数为protected类型* method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));* method(2)如下实例所示 将WritableWorkbook直接写入到输出流   */   File fileWrite = new File("D:/testWrite.xls");   fileWrite.createNewFile();   OutputStream os = new FileOutputStream(fileWrite);WritableWorkbook wwb = Workbook.createWorkbook(os);   //创建Excel工作表 指定名称和位置   WritableSheet ws = wwb.createSheet("数据表",0);   //**************往工作表中添加数据*****************   //1.添加Label(列,行,内容)对象   .列,行----都从0开始Label label = new Label(0,0,"1-1");   ws.addCell(label);//添加带有字型Formatting对象   WritableFont wf = new WritableFont(WritableFont.TIMES,12,WritableFont.BOLD,true);   WritableCellFormat wcf = new WritableCellFormat(wf);   Label labelcf = new Label(1,1,"陪儿棒",wcf);   ws.addCell(labelcf);   //添加带有字体颜色的Formatting对象   WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,   UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);   WritableCellFormat wcfFC = new WritableCellFormat(wfc);   Label labelCF = new Label(2,2,"可好了!",wcfFC);   ws.addCell(labelCF);   //2.添加Number对象   Number labelN = new Number(0,3,520);   ws.addCell((WritableCell) labelN);   //添加带有formatting的Number对象   NumberFormat nf = new NumberFormat("#.##");   WritableCellFormat wcfN = new WritableCellFormat(nf);   Number labelNF = new Number(1,5,3.1415926,wcfN);   ws.addCell(labelNF);   //3.添加Boolean对象   Boolean labelB = new jxl.write.Boolean(0,6,false);   ws.addCell(labelB);//4.添加DateTime对象   jxl.write.DateTime labelDT = new jxl.write.DateTime(0,2,new java.util.Date());   ws.addCell(labelDT);   //添加带有formatting的DateFormat对象   DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");   WritableCellFormat wcfDF = new WritableCellFormat(df);   DateTime labelDTF = new DateTime(1,4,new java.util.Date(),wcfDF);   ws.addCell(labelDTF);       //添加图片对象,jxl只支持png格式图片   WritableImage(列,行,宽,高,image);File image = new File("D:\\images.png");   WritableImage wimage = new WritableImage(0,1,2,2,image);   ws.addImage(wimage);   //写入工作表   wwb.write();   wwb.close(); }   catch(Exception e)   {   e.printStackTrace();   } }public static void main(String[] args) {//写入excelwriterexcel();//读取excelreadexcel();   }}
页: [1]
查看完整版本: java读取和写入excel