package com.softeem.excel; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Pattern; public class TypeTools {//工具类 static SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");//日期转换格式 // private static DateFormat format; public static int getInt(String s){//字符串转int if(Pattern.matches("^\\d*$",s)){ return Integer.parseInt(s); } return 0; } public static double getDouble(String s){//字符转转double if(Pattern.matches("^\\d+\\.??\\d+$", s)){ return Double.parseDouble(s); } return 0.0; } //"" != null public static Date getDate(String s)//字符串转Date { Date date = null; try { if(s != null && !"".equals(s)){ date = sdf.parse(s); } } catch (ParseException e) { e.printStackTrace(); } return date; } public static BigDecimal getBigDecimal(String s)//字符串转BigDecimal { if(Pattern.matches("^\\d+\\.??\\d+$", s)){ return new BigDecimal(s); } return new BigDecimal("0.0"); } public static String getSring(Date date){//日期转字符串 if(date != null){ return sdf.format(date); } return null; } }
package com.softeem.excel; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableCell; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; /** * 利用JXL实现对于excel-2000/2003版本的文件进行读写操作 * @author mrchai */ public class ExcelTest { public List<Goods> read(File file){ List<Goods> list = new ArrayList<>(); Goods goods = null; Workbook workbook = null; try { //创建一个工作簿 workbook = Workbook.getWorkbook(file); //获取所有表单对象 // Sheet[] sheets = workbook.getSheets(); //获取指定索引的表单 Sheet sheet = workbook.getSheet(0); //获取指定名称的表单 // Sheet sheet = workbook.getSheet("Sheet1"); //获取总行数 int rows = sheet.getRows(); for (int i = 1; i < rows; i++) { goods = new Goods(); String s1 = sheet.getCell(0, i).getContents(); //编号 String s2 = sheet.getCell(1, i).getContents(); //商品名 String s3 = sheet.getCell(2, i).getContents(); //单价 String s4 = sheet.getCell(3, i).getContents(); //折扣 String s5 = sheet.getCell(4, i).getContents(); //时间 String s6 = sheet.getCell(5, i).getContents(); //库存 goods.setGname(s2); goods.setGno(TypeTools.getInt(s1)); goods.setPrice(TypeTools.getBigDecimal(s3)); goods.setOffset(TypeTools.getDouble(s4)); goods.setDate(TypeTools.getDate(s5)); goods.setCount(TypeTools.getInt(s6)); list.add(goods); } } catch (BiffException | IOException e) { e.printStackTrace(); } finally{ if(workbook != null) workbook.close(); } return list; } public void createExcel(List<Goods> goods,File dir){ //根据系统时间生成一个excel文件 File file = new File(dir,System.currentTimeMillis()+".xls"); WritableWorkbook wwb = null; try { //创建一个可写工作簿 wwb = Workbook.createWorkbook(file); //获取一个可写的表单 WritableSheet sheet = wwb.createSheet("商品信息表", 0); //创建单元格,指定列,行,文本内容 Label c1 = new Label(0, 0, "编号"); Label c2 = new Label(1, 0, "商品名"); Label c3 = new Label(2, 0, "单价"); Label c4 = new Label(3, 0, "折扣"); Label c5 = new Label(4, 0, "上架时间"); Label c6 = new Label(5, 0, "库存"); //将单元格加入表单 sheet.addCell(c1); sheet.addCell(c2); sheet.addCell(c3); sheet.addCell(c4); sheet.addCell(c5); sheet.addCell(c6); //添加数据 for(int i = 0; i < goods.size();i++){ c1 = new Label(0,i+1,goods.get(i).getGno()+""); c2 = new Label(1,i+1,goods.get(i).getGname()); c3 = new Label(2,i+1,goods.get(i).getPrice().toString()); c4 = new Label(3,i+1,goods.get(i).getOffset()+""); c5 = new Label(4,i+1,TypeTools.getSring(goods.get(i).getDate())); c6 = new Label(5,i+1,goods.get(i).getCount()+""); sheet.addCell(c1); sheet.addCell(c2); sheet.addCell(c3); sheet.addCell(c4); sheet.addCell(c5); sheet.addCell(c6); } //写入 wwb.write(); } catch (IOException e) { e.printStackTrace(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }finally{ try { if(wwb != null)wwb.close(); } catch (WriteException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { File f = new File("goodslist.xls"); List<Goods> goods = new ExcelTest().read(f);//读取goodslist中的数据 new ExcelTest().createExcel(goods, new File("D:\\Users"));//写入 } }
package com.softeem.excel; import java.math.BigDecimal; import java.util.Date; public class Goods { private int gno;// id private String gname;// 商品名 private BigDecimal price;// 单价 private double offset;// 折扣率 private Date date;// 日期 private int count;// 库存 public Goods() { // TODO Auto-generated constructor stub } public Goods(int gno, String gname, BigDecimal price, double offset, Date date, int count) { super(); this.gno = gno; this.gname = gname; this.price = price; this.offset = offset; this.date = date; this.count = count; } public int getGno() { return gno; } public void setGno(int gno) { this.gno = gno; } public String getGname() { return gname; } public void setGname(String gname) { this.gname = gname; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public double getOffset() { return offset; } public void setOffset(double offset) { this.offset = offset; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } @Override public String toString() { return "Goods [gno=" + gno + ", gname=" + gname + ", price=" + price + ", offset=" + offset + ", date=" + date + ", count=" + count + "]"; } }
利用JXL实现对于excel-2000/2003版本的文件进行读写操作
最新推荐文章于 2018-07-13 14:33:09 发布