通过jxl.jar 读取、导出excel的实例代码

 更新时间:2013年03月04日 10:45:05   作者:  
通过jxl.jar 读取、导出excel的实例代码,需要的朋友可以参考一下

复制代码 代码如下:

 package export.excel;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import export.vo.PersonVo;

/**导出excel文件
 *
 * @author 路人甲
 *
 */
public class ExportExcel {

 
 public List<PersonVo> personVoList;

 public ExportExcel()
 {
  initdata();
 }

 /**
  * 初始化数据
  */
 public void initdata()
 {
  // 随机函数
  Random random = new Random();
  personVoList = new ArrayList<PersonVo>();
  // 初始化100个人进集合
  PersonVo personVo = null;
  for (int i = 0; i < 100; i++)
  {
   personVo = new PersonVo();
   personVo.setId("" + i);
   personVo.setName("路人" + i);
   if (i%2==0)
   {
    personVo.setSex("男");
   }
   else
   {
    personVo.setSex("女");
   }
   // 取100岁以内的随机年龄
   personVo.setAge("" + random.nextInt(100));
   personVoList.add(personVo);
  }
 }

 /**导出数据以Excel格式导出
  * exportName 导出文件名称
  * @param exportName
  */
 public void exportPerson(String exportName)
 {
  try{
   File excelFile = new File(exportName + "Temp.xls");
   // 文件格式
   WritableCellFormat format = new WritableCellFormat();
   // x  靠左
   format.setAlignment(Alignment.RIGHT);
   // y 靠顶
   format.setVerticalAlignment(VerticalAlignment.TOP);

   // 创建一个工作文件
   WritableWorkbook writableWorkbook = Workbook.createWorkbook(excelFile);
   // 创建一个工作簿
   WritableSheet sheet1 = writableWorkbook.createSheet("个人信息列表", 0);
   //创建行数 设置行的宽度
   sheet1.setColumnView(0, 10);
   sheet1.setColumnView(1, 10);
   sheet1.setColumnView(2, 10);
   sheet1.setColumnView(3, 10);
   // 设置行的值
   sheet1.addCell(new Label(0, 0, "ID", format));
   sheet1.addCell(new Label(1, 0, "姓名", format));
   sheet1.addCell(new Label(2, 0, "性别", format));
   sheet1.addCell(new Label(3, 0, "年龄", format));

   // 把集合写入到excel中
   int rowNum = 1;
   for (PersonVo bean : personVoList)
   {
    int colspanNum = 0;
    sheet1.addCell(new Label(colspanNum, rowNum, bean.getId(), format));
    sheet1.addCell(new Label(colspanNum++, rowNum, bean.getName(), format));
    sheet1.addCell(new Label(colspanNum++, rowNum, bean.getSex(), format));
    sheet1.addCell(new Label(colspanNum++, rowNum, bean.getAge(), format));

    rowNum++;
   }

   writableWorkbook.write();
   writableWorkbook.close();
//   如果是在网络下载的,那么就写这些
//            super.getHttpServletResponse().setContentType("application/x-msdownload");
//            String encodetittle = new String(excelName.getBytes("GBK"), "ISO-8859-1");
//            super.getHttpServletResponse().addHeader("Content-Disposition","attachment;filename="+encodetittle+".xls");
            FileInputStream finput = new FileInputStream(excelFile);
//            OutputStream output = super.getHttpServletResponse().getOutputStream();
            File fout = new File(exportName + ".xls");
            OutputStream output = new FileOutputStream(fout);
            BufferedInputStream buffin = new BufferedInputStream(finput);
            BufferedOutputStream buffout = new BufferedOutputStream(output);
            byte[] buffer = new byte[4096];
            int count = 0;
            while ((count = buffin.read(buffer, 0, buffer.length)) > 0) {
                buffout.write(buffer, 0, count);
            }
            buffin.close();
            buffout.close();
            finput.close();
            output.close();
            excelFile.delete();
  }
  catch (Exception e) {
   e.printStackTrace();
  }
  finally
  {
   System.out.println("完成导出操作");
  }

 }

 /**导入数据以Excel格式导出
  *
  * @param importExcel 导入Excel文件名称
  */
 public void importPerson(String importExcel)
 {
  try{
   File excelFile = new File(importExcel+".xls");
   // 创建一个工作文件
   Workbook workbook = Workbook.getWorkbook(excelFile);
   // 获得第一个工作簿 这里有两种方法获取sheet表,1为名字,而为下标,从0开始
   Sheet sheet = workbook.getSheet(0);
   // 总记录数
   int allRow = sheet.getRows();
   int allColspan = sheet.getColumns();
   System.out.println(allRow);
   System.out.println(allColspan);
   // 取数据
   for (int i=0; i<allRow; i++)
   {
    // 取出每一列的值
    for (int j=0; j<allColspan; j++)
    {
//     sheet.getCell(列数, 行数);
     Cell cell = sheet.getCell(j, i);
     // 打印出该列的值
     System.out.print(cell.getContents() + "\t");
    }
    System.out.println();
   }
   //关闭
   workbook.close();
  }catch (Exception e) {
   e.printStackTrace();
  }
  finally
  {
   System.out.println("完成导入操作");
  }
 }


 /**
  * @param args
  */
 public static void main(String[] args) {

  ExportExcel exportExcel = new ExportExcel();
  // 设置路径
  String srcPath = "C:/Quarantine/PersonVo";
//  导出
//  exportExcel.exportPerson(srcPath);
  // 读取
  exportExcel.importPerson(srcPath);
 }

}
 

相关文章

  • 解决SpringMvc中普通类注入Service为null的问题

    解决SpringMvc中普通类注入Service为null的问题

    这篇文章主要介绍了解决SpringMvc中普通类注入Service为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java复合语句的使用方法详解

    Java复合语句的使用方法详解

    这篇文章主要介绍了Java编程中复合语句,结合相关的具体实例介绍了其用法,需要的朋友可以参考下
    2017-09-09
  • Netty开发及粘包实战解决分析

    Netty开发及粘包实战解决分析

    这篇文章主要为大家介绍了Netty开发及粘包实战解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • 使用maven方式创建springboot项目的方式

    使用maven方式创建springboot项目的方式

    使用Spring Initializr创建spring boot项目,因为外网问题导致很难成功,所以只能使用maven方式,这里介绍下使用maven方式创建springboot项目的方法,感兴趣的朋友一起看看吧
    2022-09-09
  • protobuf与json转换小结

    protobuf与json转换小结

    protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类型可以作为json的key,protobuf提供方法进行转换
    2017-07-07
  • hadoop分布式环境搭建过程

    hadoop分布式环境搭建过程

    这篇文章主要介绍了hadoop分布式环境搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Spring Boot优化后启动速度快到飞起技巧示例

    Spring Boot优化后启动速度快到飞起技巧示例

    这篇文章主要为大家介绍了Spring Boot优化后启动速度快到飞起的技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Java踩坑记录之BigDecimal类

    Java踩坑记录之BigDecimal类

    这篇文章主要给大家介绍了关于Java踩坑记录之BigDecimal类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • java中for和forEach的速度比较实例Demo

    java中for和forEach的速度比较实例Demo

    for循环中的循环条件中的变量只求一次值,而foreach语句是java5新增,在遍历数组、集合的时候,foreach拥有不错的性能,这篇文章主要给大家介绍了关于java中for和forEach速度比较的相关资料,需要的朋友可以参考下
    2021-08-08
  • 使用Properties读取配置文件的示例详解

    使用Properties读取配置文件的示例详解

    开发SpringBoot项目时,使用配置文件配置项目相关属性是必不可少的,所以下文为大家准备了使用Properties读取配置文件的示例代码,希望对大家有所帮助
    2023-06-06

最新评论