|
|
需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(); }} |
|