记录下Excel的导入导出,及导出word

首先导入的jar包是poi。

//创建Excel工作簿
HSSFWorkbook workbook=new HSSFWorkbook();
//创建一个工作表sheet
HSSFSheet sheet=workbook.createSheet();
//创建第一行
HSSFRow row=sheet.createRow(0);
//下面是对行进行操作
 
 
/**
 * firstRow:起始行
 * lastRow:结束行<这两个主要是用来合并列单元格的,行数是从0开始>
 * firstCol:开始列
 * lastCol:结束列<这两个主要是用来合并行单元格的,也是从0开始>
 * <4个参数搭配配合就可以随意的设置各种行列合并了>
 */
sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 12));//合并2行12列,留一片空白放标题,并居中显示
HSSFCell cell1=row.createCell(0);//设置主标题
cell1.setCellValue(theme);
//获取样式,这里的样式设置的是整个Excel表的
 
HSSFCellStyle cellStyle=cell1.getCellStyle();//获取样式对象
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置水平居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置垂直居中
//由于前面合并了两行,所以直接从第三行开始,
//每次设置行数据都需要重新去获取那一行的对象
//每一个单元格的合并都需要调用一次new cellRangeAddress(0,0,0,0)
row=sheet.createRow(3);
sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
row.createCell(0).setCellValue("序号");
sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
row.createCell(1).setCellValue("单位");
sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
row.createCell(2).setCellValue("姓名");
sheet.addMergedRegion(new CellRangeAddress(3, 4, 3, 3));
row.createCell(3).setCellValue("性别");
//下面再录入具体显示数据就可以进行遍历了,就不再进行记录了
//样式还有很多可以设置字体大小颜色,背景颜色,单元格高度,去除边框等等,因为这次项目没有涉及到,所以还未使用过,记录下方便以后查找


/*=================================以下是word的导出===========================================*/
//需要导出的包是freemarker
//首先需要用word写完文档布局,在需要录入数据的地方存一些字母当做变量,然后将文档另存为word 2003 xml格式
//将这个xml文件中需要录入的数据都改为类似${name}格式,方便之后动态传值,修改完之后将文件后缀修改为ftl
//开始读取数据
 
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
configuration.setClassForTemplateLoading(this.getClass(), "/");  //FTL文件所存在的位置
Template t=null;
File file = null;
InputStream fin = null;
ServletOutputStream out = null;
try {
   String name =  "会员申请.doc";//当初文件名
   file = new File(name);
   t = configuration.getTemplate("clubTemp.ftl"); //文件名
   Writer w = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
   t.process(dataMap, w);//dataMap是Map对象
   fin = new FileInputStream(file);
   response.setCharacterEncoding("utf-8");
   response.setContentType("application/msword");
   // 设置浏览器以下载的方式处理该文件名
   String fileName = "会员申请"+Math.random()*10000 + ".doc";
   response.setHeader("Content-Disposition", "attachment;filename="
         .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
   out = response.getOutputStream();
   byte[] buffer = new byte[512];  // 缓冲区
   int bytesToRead = -1;
   // 通过循环将读入的Word文件的内容输出到浏览器中
   while((bytesToRead = fin.read(buffer)) != -1) {
      out.write(buffer, 0, bytesToRead);
   }
 
} catch (Exception e) {
   e.printStackTrace();
} finally {
   try {
      if(fin != null)
         fin.close();
      if(out != null) out.close();
      if(file != null) file.delete(); // 删除临时文件
   } catch (IOException e) {
      e.printStackTrace();
   }
}






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值