zoukankan      html  css  js  c++  java
  • 使用JXL对EXCLE的导入导出

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Date;
    
    import jxl.CellType;
    import jxl.DateCell;
    import jxl.NumberCell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.format.Alignment;
    import jxl.format.Colour;
    import jxl.format.UnderlineStyle;
    import jxl.format.VerticalAlignment;
    import jxl.read.biff.BiffException;
    import jxl.write.DateFormat;
    import jxl.write.DateTime;
    import jxl.write.Label;
    import jxl.write.Number;
    import jxl.write.NumberFormat;
    import jxl.write.WritableCell;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    
    import org.junit.Test;
    
    public class JXLDemo1 {
    
        // 写入EXCEL
        // @Test
        public void test1() throws Exception, WriteException {
            // //获得输出流,该输出流的输出介质是客户端浏览器
            //
            // OutputStream output=response.getOutputStream();
            //
            // response.reset();
            //
            // response.setHeader("Content-disposition","attachment;           filename=temp.xls");
            //
            // response.setContentType("application/msexcel");
            // WritableWorkbook wk=Workbook.createWorkbook(output);
    
            //  加下划线这部分代码是B/S模式中采用的输出方式,而不是输出到本地指定的磁盘目录。该代码表示将temp.xls的Excel文件通过应答实体(response)输出给请求的客户端浏览器,下载到客户端本地(保存或直接打开)。若要直接输出到磁盘文件可采用下列代码替换加下划线这部分代码
            File file = new File("D://temp.xls");
            WritableWorkbook wk = Workbook.createWorkbook(file);
    
            // 创建可写入的Excel工作薄,且内容将写入到输出流,并通过输出流输出给客户端浏览
    
            // /创建可写入的Excel工作表
    
            WritableSheet sheet = wk.createSheet("成绩表", 0);
    
            // 把单元格(column, row)到单元格(column1, row1)进行合并。
    
            // mergeCells(column, row, column1, row1);
    
            sheet.mergeCells(0, 0, 4, 0);// 单元格合并方法
    
            // 创建WritableFont 字体对象,参数依次表示黑体、字号12、粗体、非斜体、不带下划线、亮蓝色
    
            WritableFont titleFont = new WritableFont(
                    WritableFont.createFont("黑体"), 12, WritableFont.BOLD, false,
                    UnderlineStyle.NO_UNDERLINE, Colour.LIGHT_BLUE);
    
            // 创建WritableCellFormat对象,将该对象应用于单元格从而设置单元格的样式
    
            WritableCellFormat titleFormat = new WritableCellFormat();
    
            // 设置字体格式
    
            titleFormat.setFont(titleFont);
    
            // 设置文本水平居中对齐
    
            titleFormat.setAlignment(Alignment.CENTRE);
    
            // 设置文本垂直居中对齐
    
            titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
    
            // 设置背景颜色
    
            titleFormat.setBackground(Colour.GRAY_25);
    
            // 设置自动换行
    
            titleFormat.setWrap(true);
    
            // 添加Label对象,参数依次表示在第一列,第一行,内容,使用的格式
    
            Label lab_00 = new Label(0, 0, "学员考试成绩一览表", titleFormat);
    
            // 将定义好的Label对象添加到工作表上,这样工作表的第一列第一行的内容为‘学员考试成绩一览表’并应用了titleFormat定义的样式
    
            sheet.addCell(lab_00);
    
            WritableCellFormat cloumnTitleFormat = new WritableCellFormat();
    
            cloumnTitleFormat.setFont(new WritableFont(WritableFont
                    .createFont("宋体"), 10, WritableFont.BOLD, false));
    
            cloumnTitleFormat.setAlignment(Alignment.CENTRE);
    
            Label lab_01 = new Label(0, 1, "姓名", cloumnTitleFormat);
    
            Label lab_11 = new Label(1, 1, "班级", cloumnTitleFormat);
    
            Label lab_21 = new Label(2, 1, "笔试成绩", cloumnTitleFormat);
    
            Label lab_31 = new Label(3, 1, "上机成绩", cloumnTitleFormat);
    
            Label lab_41 = new Label(4, 1, "考试日期", cloumnTitleFormat);
    
            sheet.addCell(lab_01);
    
            sheet.addCell(lab_11);
    
            sheet.addCell(lab_21);
    
            sheet.addCell(lab_31);
    
            sheet.addCell(lab_41);
    
            sheet.addCell(new Label(0, 2, "李明"));
    
            sheet.addCell(new Label(1, 2, "As178"));
    
            // 定义数字格式
    
            NumberFormat nf = new NumberFormat("0.00");
    
            WritableCellFormat wcf = new WritableCellFormat(nf);
    
            // 类似于Label对象,区别Label表示文本数据,Number表示数值型数据
    
            Number numlab_22 = new Number(2, 2, 78, wcf);
    
            sheet.addCell(numlab_22);
    
            sheet.addCell(new Number(3, 2, 87, new WritableCellFormat(
                    new NumberFormat("#.##"))));
    
            // 定义日期格式
    
            DateFormat df = new DateFormat("yyyy-MM-dd hh:mm:ss");
    
            // 创建WritableCellFormat对象
    
            WritableCellFormat datewcf = new WritableCellFormat(df);
    
            // 类似于Label对象,区别Label表示文本数据,DateTime表示日期型数据
    
            DateTime dtLab_42 = new DateTime(4, 2, new Date(), datewcf);
    
            sheet.addCell(dtLab_42);
    
            // 将定义的工作表输出到之前指定的介质中(这里是客户端浏览器)
    
            wk.write();
    
            // 操作完成时,关闭对象,释放占用的内存空间
    
            wk.close();
    
        }
    
        // 从EXCEL写出
    //    @Test
        public void loadScoreInfo() throws IOException, BiffException {
    
            // 导入已存在的Excel文件,获得只读的工作薄对象
            FileInputStream fis = new FileInputStream("D://temp.xls");
            Workbook wk = Workbook.getWorkbook(fis);
            // 获取第一张Sheet表
            Sheet sheet = wk.getSheet(0);
            // 获取总行数
            int rowNum = sheet.getRows();
            // 从数据行开始迭代每一行
    
            for (int i = 2; i < rowNum; i++) {
                ScoreInfo info = new ScoreInfo();
                // getCell(column,row),表示取得指定列指定行的单元格(Cell)
                // getContents()获取单元格的内容,返回字符串数据。适用于字符型数据的单元格
                // 使用实体类封装单元格数据
                info.setStuName(sheet.getCell(0, i).getContents());
                info.setClassName(sheet.getCell(1, i).getContents());
                // 判断单元格的类型,单元格主要类型LABEL、NUMBER、DATE
                if (sheet.getCell(2, i).getType() == CellType.NUMBER) {
                    // 转化为数值型单元格
                    NumberCell numCell = (NumberCell) sheet.getCell(2, i);
                    // NumberCell的getValue()方法取得单元格的数值型数据
                    info.setWrittenScores(numCell.getValue());
                }
                if (sheet.getCell(3, i).getType() == CellType.NUMBER) {
                    NumberCell numCell = (NumberCell) sheet.getCell(3, i);
                    info.setMachineScores(numCell.getValue());
                }
    
                if (sheet.getCell(4, i).getType() == CellType.DATE) {
                    DateCell dateCell = (DateCell) sheet.getCell(4, i);
                    // DateCell的getDate()方法取得单元格的日期型数据
                    info.setDate(dateCell.getDate());
                }
                System.out.println("学生信息" + info);
            }
            fis.close();
            wk.close();
        }
    
        // 更新EXCEL
        @Test
        public void test3() throws Exception, IOException {
            File file = new File("d://temp.xls");
            // 导入已存在的Excel文件,获得只读的工作薄对象
            Workbook wk = Workbook.getWorkbook(file);
            // 根据只读的工作薄对象(wk)创建可写入的Excel工作薄对象
            WritableWorkbook wwb = Workbook.createWorkbook(file, wk);
            // 读取第一张工作表
            WritableSheet sheet = wwb.getSheet(0);
            // /获得要编辑的单元格对象
            WritableCell cell = sheet.getWritableCell(1, 2);
            // 判断单元格的类型, 做出相应的转化
            if (cell.getType() == CellType.LABEL) {
                Label lable = (Label) cell;
                // 修改单元格的内容
                lable.setString("As888");
            }
            wwb.write();
            wwb.close();
            wk.close();
        }
    
    }
  • 相关阅读:
    [Java面试一]Spring总结以及在面试中的一些问题.(转发:http://www.cnblogs.com/wang-meng/p/5701982.html)
    微信开发学习2--消息管理
    微信开发学习1--接入指南(入门,微信开发环境搭建)
    Bootstrap学习5--bootstrap中的模态框(modal,弹出层)
    iOS开发常用的宏
    iOS开发之---多线程技术
    iOS开发 之---返回可重用单元格
    iOS开发之---发送邮件
    ios开发之---UITextField退出键盘
    StoryBoard概览
  • 原文地址:https://www.cnblogs.com/Damon-Luo/p/5920576.html
Copyright © 2011-2022 走看看