使用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;

import cn.com.nankang.entity.ScoreInfo;

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();
    }

}
时间: 2024-12-20 06:13:21

使用JXL对EXCLE的导入导出的相关文章

使用Poi对EXCLE的导入导出

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.ap

jxl导入导出实例

1 package com.tgb.test; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import jxl.Cell; 9 import jxl.Sheet; 10 import jxl.Workbook; 11 import jxl.write.Label; 12 import jxl.write.Numb

jxl导入/导出excel

转自:http://www.cnblogs.com/linjiqin/p/3540266.html 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; 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;

Java +EasyUI+SpringMvc实现Excle导入导出(下)

前言 接上篇,在上篇文章我们介绍了要实现Excle导入做的一些配置和Excel导入的前端EasyUI代码的书写和后台controller的具体书写,这篇我们我们主要来学习Excle导出的实现和ExcelUtil类的编写. 正题 Excel导出就是根据前台条件将参数传到controller,根据参数去数据库中进行查询,查询出list集合,调用ExcelUtil工具类,将list集合转为成excle数据,输出到浏览器. 导出实现 首先我们先来看下前台代码,前台获取参数,将参数传到对于的control

Excel jxl导入导出

JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 现在发布的稳定版本是V2.0,提供以下功能: 从Excel 95.97.2000等格式的文件中读取数据: 读取Exc

jxl导入导出Excel

Excel的导入导出在项目中经常用到,比较常用的解析架包是jxl和poi.这里首先介绍jxl是如何实现的. 通过参考网上的写法跟我个人的理解: 导入Excel:通过本地文件得到一个输入流,然后根据Excel的结构来解析数据. 导出Excel:声明一个输出流对象,根据参数来得到一个workbook,用来写入数据的.然后根据Excel表的结构来想workbook添加元素即可.sheet.cell.... 导出Excel,导出含有图片的数据:jxl只支持png格式的图片. 导出对象到Excel表:其实

java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用! 简单先写一下目录的建立的主要代码,测试用的 List ls = new ArrayList();//报表名称列表  ls.add("BB_BB03");  ls.add("BB_BB05");  ls.add("BB_BB06"); try { 

org.apache.poi3.1.7 Excle并发批量导入导出

org.apache.poi3.1.7 升级,需要修改设置方式: 1.org.apache.poi3.1.4 的设置单元格: XSSFCellStyle cellStyle = wb.createCellStyle();   cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中  cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直 org.apache.

JXL导入/导出

近两年技术没有过细化总结,突然心血来潮,随手来总结一些问题,废话不多说,切入正题. jxl导入导出这里主要用的EXTJS+Sh  前端:创建按键,调用触发事件,根据触发事件中url找到控制层相对应的路径 按键 2.js /* * 导入 */ importItem : function() { Ext.QuickTips.init(); Ext.onReady(function() { var form = new Ext.form.FormPanel({ baseCls : 'x-plain',