黑马程序员技术交流社区

标题: jexcelapi jxl学习笔记 (2) [打印本页]

作者: sunhaoz    时间: 2013-8-7 22:02
标题: jexcelapi jxl学习笔记 (2)
本帖最后由 孙浩臻 于 2013-8-7 22:03 编辑

jexcelapi jxl学习笔记 (1)
http://bbs.itheima.com/forum.php?mod=viewthread&tid=67419
(出处: 黑马程序员训练营论坛)



这部分是学习笔记中的示例代码
package com.xls.test;

import java.io.File;

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
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 XLS {
        public static void main(String args[]) {
                try {
                        //createXls();
                        readXls();
                        //mergeCells();
                        //createXlsImg();
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

        /**
         * 创建一个新的xls
         *
         * @throws Exception
         */
        public static void createXls() throws Exception {
                // 打开文件
                WritableWorkbook book = Workbook .createWorkbook(new File("c:\\test.xls"));
                // 设置左下角的内个工作薄的名称和第几个工作薄  
                // 若只有一个工作薄  就算设置的不是0 也会默认为0
                WritableSheet sheet = book.createSheet(" 第一页 ", 0);
                // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
                // 以及单元格内容为test
                Label label = new Label(0, 0, " test ");
                // 将定义好的单元格添加到工作表中
                sheet.addCell(label);
                // 写入数据并关闭文件
                book.write();
                book.close();
        }

        /**
         * 读取指定的xls
         *
         * @throws Exception
         */
        public static void readXls() throws Exception {
                Workbook book = Workbook.getWorkbook(new File("c:\\test.xls"));
                // 获得第一个工作表对象
                Sheet sheet = book.getSheet(0);
                // 得到第一列第一行的单元格
                Cell cell = sheet.getCell(0, 0);
                //获取内容的类型
                System.out.println(cell.getType());
                // 获取内容
                String result = cell.getContents();
                System.out.println(result);
                book.close();
        }

        /**
         * 合并单元格并在单元格中输入内容
         * @throws Exception
         */
        public static void mergeCells() throws Exception {
                WritableWorkbook book = Workbook.createWorkbook(new File("c:\\test.xls"));
                //设置左下角的内个工作薄的名称和第几个工作薄  
                //若只有一个工作薄  就算设置的不是0 也会默认为0
                WritableSheet sheet = book.createSheet("第一页", 0);
                // 合并单元格
                sheet.mergeCells(3, 3, 6, 6);
                // 设置填充内容的格式
                WritableFont font = new WritableFont(WritableFont.TIMES, 30,WritableFont.BOLD);
                WritableCellFormat format = new WritableCellFormat(font);
                // 水平居中
                format.setAlignment(jxl.format.Alignment.CENTRE);
                // 垂直居中
                format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
                // 背景颜色和样式
                format.setBackground(jxl.format.Colour.BLUE);
                // 边框样式
                format.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THICK);
                // 添加内容
                Label label = new Label(3, 3, "合并", format);
                sheet.addCell(label);
                book.write();
                book.close();
        }

        /**
         * 在工作表中添加图片
         * @throws Exception
         */
        public static void createXlsImg() throws Exception {
                WritableWorkbook book = Workbook.createWorkbook(new File("c:\\test.xls"));
                //设置左下角的内个工作薄的名称和第几个工作薄  
                //若只有一个工作薄  就算设置的不是0 也会默认为0
                WritableSheet sheet = book.createSheet("第一页", 0);
                //第一个参数的 double x  , double y , double  width, double height 所指的全部都是xls中的格子数
                //第二个参数 图片地址  
                //JExcelAPI对图片的操作有限:它不能生成图表、图片和宏,但是复制工作表时,这些信息可以保留复制。
                //而且当向工作表中添加图片时,只能支持PNG格式的图片。
                WritableImage image = new WritableImage(10.0,10.0,5,20,new File("C:\\test.png"));
                //添加图片
                sheet.addImage(image);  
                book.write();
                //如果写入之后不关闭book的话
                //将会导致生成的Excel文档在打开时提示“文件的格式与扩展名指定的格式不一致”
                book.close();
        }

        /**
         * 修改xls文件
         * @throws Exception
         */
        public static void alterExcel() throws Exception
        {
                Workbook rw = Workbook.getWorkbook(new File("c://test.xls")) ;  
        WritableWorkbook wwb = Workbook.createWorkbook(new File("c://test1.xls"), rw) ;  
        WritableSheet ws = wwb.getSheet(0) ;  
        WritableCell wc = ws.getWritableCell(0, 0) ;  
        //判断获取到的内容是否为字符串 若为字符串变进入if
        if(wc.getType() == CellType.LABEL){  
            Label l = (Label)wc ;  
            l.setString("the value has been modified!!") ;  
        }  
        wwb.write() ;  
        wwb.close() ;  
        rw.close() ;  
        System.out.println("修改成功!!") ;  
        }
        
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2