六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 73|回复: 0

JXL解析Excel

[复制链接]

升级  22%

19

主题

19

主题

19

主题

秀才

Rank: 2

积分
83
 楼主| 发表于 2013-1-15 02:26:26 | 显示全部楼层 |阅读模式
本文章分两部分部分。
 
第一部分:有关JXL的链接
Jxl写Excel的使用总结
Jxl的类总结
利用JXL操作EXCEL文件
 
第二部分:自己写的JXL读取和写Excel的Demo代码
 
读取Excel表格:
 
//读Excel表格--工作薄,工作表,行,单元格public static String  readExcel(String filePath){File file=new File(filePath);Workbook wb=null;StringBuffer sb = new StringBuffer();  try {//传入的是文件,获取工作薄wb=Workbook.getWorkbook(file);if(wb!=null){//获取所有的工作表Sheet[] sheets = wb.getSheets(); if(sheets!=null&&sheets.length!=0){for(int i=0;i<sheets.length;i++){//获取每一个工作表,此后的操作都在工作表上面进行Sheet sheet=wb.getSheet(i);//println(sheet.getRowView(0).getSize());////这个Columns与row是一样的//println(sheet.getColumns());////精确定位,注意:第一个参数是列,第二个才是行//println(sheet.getCell(3, 1).getContents());//获取行的长度int rows_len=sheet.getRows();for(int j=0;j<rows_len;j++){//获取所有的列Cell[] cells=sheet.getRow(j);if(cells!=null&&cells.length!=0){for(int k=0;k<cells.length;k++){//获取每一列Cell cell=cells[k];////单元格的样式//println(cell.getCellFormat().getFont().getColour().getDescription());////单元格类型//println(cell.getType());//每一列空一个制表符sb.append(cell.getContents() + "\t");}//每一列最后一列空一个制表符,且换行sb.append("\t\n");  }}//最后一列换行sb.append("\t\n");  }}}} catch (BiffException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {              wb.close();          }  return sb.toString();} 
写Excel表格:
 
//写Excel表格public static void writeExcel(String fileName){String[] title={"姓名","英文姓名","职位","手机","年龄","工资"};try {OutputStream os=new FileOutputStream(fileName);//创建工作薄,一个参数WritableWorkbook  wb=Workbook.createWorkbook(os);//创建工作表WritableSheet sheet=wb.createSheet("员工基本信息", 0);Label label;//填充表头for(int i=0;i<title.length;i++){// Label(x,y,z)其中x代表单元格的第x+1列,y代表单元格的第y+1行, 单元格的内容是z  label=new Label(i,0,title);sheet.addCell(label);}    //填充数据sheet.addCell(new Label(0,1,"离歌"));sheet.addCell(new Label(1,1,"bruce"));sheet.addCell(new Label(2,1,"web programmer"));sheet.addCell(new Label(3,1,"123456789"));jxl.write.Number number = new jxl.write.Number(4,1,25);  sheet.addCell(number);//jxl会自动实现四舍五入 jxl.write.NumberFormat format=new jxl.write.NumberFormat("#.##");jxl.write.WritableCellFormat wcf=new jxl.write.WritableCellFormat(format);jxl.write.Number nb = new jxl.write.Number(5,1,3200.000,wcf);  sheet.addCell(nb);//定义字体等样式CellFormat cf=wb.getSheet(0).getCell(1, 0).getCellFormat();WritableCellFormat wcf2=new WritableCellFormat(cf);wcf2.setAlignment(Alignment.CENTRE);wcf2.setBorder(Border.TOP,BorderLineStyle.THIN);wcf2.setBackground(Colour.RED);WritableFont  font=new WritableFont(WritableFont.createFont("隶书"),15);    WritableCellFormat wfont = new WritableCellFormat(font);     //这种方式是填充数据后设置的样式for(int j=0;j<title.length;j++){String content=sheet.getCell(j, 1).getContents();sheet.addCell(new Label(j,1,content,wfont));//sheet.addCell(new Label(j,1,content,wcf2));}        //进行写操作wb.write();wb.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (RowsExceededException e) {e.printStackTrace();} catch (WriteException e) {e.printStackTrace();}} 主方法:
 
public  static void main(String args[]){                //读取的excel表格文件String str=readExcel("config/TCC.xls");                //输出的excel表格文件                String str2="config/TCC.xls";                System.out.println(str);writeExcel(str2);}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表