jxl 学习笔记

这几天对excel的操作感兴趣,目前java语言操作Excel文件技术有:JXL 、POI等。

 

Jxl(jExcelAPI) 是一个韩国人写的 java操作Excel的工具,功能相对于POI要弱一些,但是对中文有很好的支持,需要说明的是,jxl对图像和图表的处理有限,只支持PNGD的格式。

 

1、 创建Excel

// 写入数据到excel

    public static void createExl(){

       // 写入

       try {

           // 创建输出对象

           WritableWorkbook book = Workbook.createWorkbook(new File("表格.xls"));

           // 生成第一页

           WritableSheet sheet = book.createSheet("第一页", 0);

           // 第一行第一列设置值

           // 设置字体

           WritableFont font = new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);

           WritableCellFormat format = new WritableCellFormat(font);

           format.setAlignment(jxl.format.Alignment.CENTRE);// 水平对齐方式:居中

           format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 垂直对齐方式:居中

          

           Label label = new Label(0,0,"第一行第一列",format);

           sheet.addCell(label);

           // 设置第二列第一行的值

           // 数字定义格式

           WritableCellFormat integerFormat = newWritableCellFormat(NumberFormats.INTEGER);

           jxl.write.Number num = newjxl.write.Number(1,0,23.11480912903,integerFormat);

           sheet.addCell(num);

           // 设置第6列第一行的值

           // 数字定义格式

           WritableCellFormat floatFormat = newWritableCellFormat(NumberFormats.FLOAT);

           jxl.write.Number num1 = newjxl.write.Number(5,0,23.11480912903,floatFormat);

           sheet.addCell(num1);

           // 设置第7列第一行的值

           // 数字定义格式

           NumberFormat myNumber = new NumberFormat("#.####");

           WritableCellFormat numFormat = new WritableCellFormat(myNumber);

           jxl.write.Number num2 = newjxl.write.Number(6,0,23.11480912903,numFormat);

           sheet.addCell(num2);

           // 设置第8列第一行的值

           // 数字定义格式

           NumberFormat numF = new NumberFormat("#.####");

           WritableFont font2 = new WritableFont(WritableFont.TIMES,13,WritableFont.BOLD);

           WritableCellFormat numFormat2 = newWritableCellFormat(font2,numF);

           jxl.write.Number num3 = newjxl.write.Number(7,0,23.11480912903,numFormat2);

           sheet.addCell(num3);

           // 日期(1,1) 第二行第一列

           Date now = Calendar.getInstance().getTime();

           DateFormat curDateFormat = new DateFormat("yyyy-MM-dd hh:mm:ss");

           WritableCellFormat dateFormat = newWritableCellFormat(curDateFormat);

           DateTime curTime = new DateTime(0,1,now,dateFormat);

           sheet.addCell(curTime);

           // 日期(1,1)

           Date date = new Date();

           DateTime time = new DateTime(1,1,date);

           sheet.addCell(time);

           // boolean 2行第3

           boolean flag = true;

           Boolean bol = new Boolean(2,1,flag);

           sheet.addCell(bol);

           // 第一行第5

           Label labelNull = new Label(4,0,null);

           sheet.addCell(labelNull);

           // 合并单元格

           //sheet.mergeCells(0,0, 3, 3);

           // 设置行高

           sheet.setRowView(0, 1000);

           // 设置列宽

           sheet.setColumnView(0, 30);

           // 操作图片

           File file = new File("C:\\temp\\ajccF08.png");

           WritableImage image = new WritableImage(0,5,1,2,file);

           sheet.addImage(image);

          

           // 写入数据并且关闭

           book.write();

           book.close();

       } catch (IOException e) {

           e.printStackTrace();

       } catch (RowsExceededException e) {

           e.printStackTrace();

       } catch (WriteException e) {

           e.printStackTrace();

       }

    }

2、 读取Excel

// excel中读取数据

    public static void readExl(){

       // 读取

       try {

           String path = "表格.xls";

           InputStream is = new FileInputStream(path);

           // 打开文件对象

//         Workbook book = Workbook.getWorkbook(new File("表格.xls"));

           Workbook book = Workbook.getWorkbook(is);

           // 电子表格的拷贝

           WritableWorkbook newBook = Workbook.createWorkbook(new File("output.xls"),book);

           newBook.write();

           newBook.close();

           // 获得第一个工作表对象

           Sheet sheet = book.getSheet(0);

           // 获取单元格

           Cell cell = sheet.getCell(0, 0);

           // 读取第一行第一列

           System.out.println(cell.getContents());

           // 读取第二列第一行

           cell = sheet.getCell(1, 0);

           System.out.println(cell.getContents());

           // 第二行第二列

           cell = sheet.getCell(1,1);

           System.out.println(cell.getContents());

           // 第一行三列

           cell = sheet.getCell(2,1);

           //  第一行四列

           cell = sheet.getCell(3,1);

           // 第一行第5

           cell = sheet.getCell(4,1);

           // 关闭

           book.close();

       } catch (BiffException e) {

           e.printStackTrace();

       } catch (IOException e) {

           e.printStackTrace();

       } catch (WriteException e) {

           e.printStackTrace();

       }

    }

3、 判断类型

// 判断单元格数据类型

    public static void judgeType(Cell cell){

       CellType type = cell.getType();

       // String

       if(type == CellType.LABEL){

           LabelCell lable = (LabelCell)cell;

           System.out.println("cell 类型:String ("+lable.getString()+")");

       }else if(type == CellType.DATE){// 日期

           DateCell date = (DateCell)cell;

           System.out.println("cell 类型:Date ("+date.getDate()+")");

       }else if(type == CellType.NUMBER){ // 数字

           NumberCell number = (NumberCell)cell;

           System.out.println("cell 类型:Number ("+number.getValue()+")");

       }else if(type == CellType.BOOLEAN){ // 布尔类型

           BooleanCell lable = (BooleanCell)cell;

           System.out.println("cell 类型:BOOL ("+lable.getValue()+")");

       }else if(type == CellType.EMPTY){ //

           System.out.println("cell 类型:空 (null)");

       }else if(type == CellType.ERROR){ // 错误

           Label lable = (Label)cell;

           System.out.println("cell 类型:error ("+lable.getString()+")");

       }

    }

4、 设置字体

// 设置字体

           WritableFont font = new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);

           WritableCellFormat format = new WritableCellFormat(font);

           format.setAlignment(jxl.format.Alignment.CENTRE);// 水平对齐方式:居中

           format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 垂直对齐方式:居中

          

           Label label = new Label(0,0,"第一行第一列",format);

           sheet.addCell(label);

5、 格式化

// 数字定义格式

           WritableCellFormat integerFormat = newWritableCellFormat(NumberFormats.INTEGER);

           jxl.write.Number num = new jxl.write.Number(1,0,23.11480912903,integerFormat);

           sheet.addCell(num);

           // 设置第6列第一行的值

           // 数字定义格式

           WritableCellFormat floatFormat = newWritableCellFormat(NumberFormats.FLOAT);

           jxl.write.Number num1 = newjxl.write.Number(5,0,23.11480912903,floatFormat);

           sheet.addCell(num1);

           // 设置第7列第一行的值

           // 数字定义格式

           NumberFormat myNumber = new NumberFormat("#.####");

           WritableCellFormat numFormat = new WritableCellFormat(myNumber);

           jxl.write.Number num2 = newjxl.write.Number(6,0,23.11480912903,numFormat);

           sheet.addCell(num2);

           // 设置第8列第一行的值

           // 数字定义格式

           NumberFormat numF = new NumberFormat("#.####");

           WritableFont font2 = new WritableFont(WritableFont.TIMES,13,WritableFont.BOLD);

           WritableCellFormat numFormat2 = newWritableCellFormat(font2,numF);

           jxl.write.Number num3 = newjxl.write.Number(7,0,23.11480912903,numFormat2);

           sheet.addCell(num3);

           // 日期第二行第一列

           Date now = Calendar.getInstance().getTime();

           DateFormat curDateFormat = new DateFormat("yyyy-MM-dd hh:mm:ss");

           WritableCellFormat dateFormat = newWritableCellFormat(curDateFormat);

           DateTime curTime = new DateTime(0,1,now,dateFormat);

           sheet.addCell(curTime);

6、 插入图像

// 操作图片

           File file = new File("C:\\temp\\ajccF08.png");

           WritableImage image = new WritableImage(0,5,1,2,file);

           sheet.addImage(image);

 

说明:WritableImage(x,y,width,height,source):width和height不是图片的宽高,而是图片要占据的单元格的个数。

7、 合并单元格

WritableSheet.mergeCells(intm,int n,int p,int q):从(m,n)到(p,q)的单元格全部合并;

 

注意:合并后的单元格不能再合并,同时合并后的数据为第一个单元的数据。

8、 设置行高、列高

WritableSheet.setRowView(intI,int height);作用是指定i+1行的高度;

 

WritableSheet.setColumnView(intI,int width):作用是指定第i+1列的宽度。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值