`
catlovefox
  • 浏览: 26127 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

Java中读取Excel,数据导入Excel

    博客分类:
  • JAVA
阅读更多
1。数据导入
import jxl.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.*;
import com.et.util.ComDate;
import com.et.util.StrUtil;
public class WriteToExcel{

   public static void writeExcel(OutputStream os) throws Exception {
    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
jxl.write.WritableSheet ws = wwb.createSheet("TestSheet1", 0);
jxl.write.Label labelC = new jxl.write.Label(0, 0, "卡编号");
ws.addCell(labelC);


labelC = new jxl.write.Label(1, 0, "卡密码");
ws.addCell(labelC);
labelC = new jxl.write.Label(2, 0, "卡点数");
ws.addCell(labelC);
labelC = new jxl.write.Label(3, 0, "生成时间");
ws.addCell(labelC);
labelC = new jxl.write.Label(4, 0, "制卡人");
ws.addCell(labelC);

// 此处的密码,卡号,每张卡的编号,生成者都可以从外部传进来,这里主要是为了演示
int nums=5; //生成卡的数量
String allPD="86598,54789,25478,96548,87458";//所有卡的密码,随机生成
String allCardID="20060310001,20060310002,20060310003,20060310004,20060310005";
//所有卡的ID,卡ID也是用StrUtil.generalSrid随机生成的,这里这是为了演示,就随便写了几个
String card_point="100";//每张卡的点数
String operator="admin";//卡的生成者

String cardIds[]=allCardID.split(",");// 所有的卡id
String pd[]=allPD.split(",");//所有的卡密码
String date=ComDate.getDateString(); //此处的ComDate是一个获得当前时间的方法,需要自己写,不是系统自带的

for(int i=0;i<nums;i++){
  labelC = new jxl.write.Label(0, (i+1), cardIds[i]);
  ws.addCell(labelC);
  labelC = new jxl.write.Label(1, (i+1), pd[i]);
  ws.addCell(labelC);
  labelC = new jxl.write.Label(2, (i+1),card_point);
  ws.addCell(labelC);
  labelC = new jxl.write.Label(3, (i+1),date);
  ws.addCell(labelC);
  labelC = new jxl.write.Label(4, (i+1),operator);
  ws.addCell(labelC);
}

//写入Exel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
}

public static void main(String[] args)throws Exception{

//此处路径&文件名都可以从外部传进来

String path="D:\\leslir";

String filename=StrUtil.generalSrid()+".xls";  //StrUtil.generalSrid方法是一个自己写的得到随机数据的方法,一般取得的是系统的毫秒数在加上随机数字
File f=new File(path,filename);

f.createNewFile();
writeExcel(new FileOutputStream(f));

}
}

2.读取数据
  /*
* 创建日期 2006-3-10
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.test;

import java.io.FileInputStream;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
/**
* @author new
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public  class ReadExcel {

public  static void ReadMethod(String filename)throws Exception{
try
{
 
  //首先构造一个输入流
     InputStream is = new FileInputStream(filename);
     //jxl的Workbook得到这个输入流
  jxl.Workbook rwb = Workbook.getWorkbook(is);
 
  //Workbook得到第一个sheet
 
  Sheet[] sheets=rwb.getSheets();//获得当前Excel表共有几个sheet
  int p=sheets.length;
  System.out.println("此表共有几个sheet------->"+p);
 
  for(int w=0;w<p;w++){  //将每个sheet中的内容全部读取出来
  
  //在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列
  Sheet rs = rwb.getSheet(w);
  int cols=rs.getColumns();
  for(int i=0;i<cols;i++){
   Cell a00 = rs.getCell(i, 0);
   String stra00 = a00.getContents();
   System.out.print("*****"+stra00+"*****");
   }
  System.out.println("\n");
  int rows=rs.getRows();
 
 
  for(int d=1;d<rows;d++){      //行循环,Excel的行列是从(0,0)开始的
   for(int t=0;t<cols;t++){  //列循环
    Cell b00=rs.getCell(t,d);
    String strb=b00.getContents();
    System.out.print(strb+"********");
   }
   System.out.println("\n");
  }
 
  System.out.println("第"+(w+1)+"个sheet结束"+"\n");
}
 
 
}
  catch (Exception e)
  {
    e.printStackTrace();
  }
}

public static void main(String args[])throws Exception{
 
  String filename="D:\\leslir\\12006031011593270.xls";//此文件就是前面数据导入生成的文件
  ReadMethod(filename);

}

}
在这里,你只要将我随机生成卡号的方法,&获得当前时间的方法加上,就可以正确执行。
分享到:
评论
1 楼 tanghuan 2011-12-30  
读取数据非常不错 呵呵  但是写你能把代码全部上传吗?

相关推荐

Global site tag (gtag.js) - Google Analytics