`
Hillen.chan
  • 浏览: 62878 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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) {
		//写入excel
		writerexcel();
		
		//读取excel
		readexcel();
		
   }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics