在java程序里面处理excel,我觉得比较方便的方式是先做出一个excel的模板(比如定义表头信息、表格名称等),然后根据这个模板往里面填充数据

我这里演示的是使用poi处理2007以上版本的excel表格

代码:

String contextPath = session.getServletContext().getRealPath("/excel"); //获取模板路径
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(contextPath + "/schedule.xlsx")); //获取模板,并装成对应类
XSSFSheet sheet = workbook.getSheetAt(0); //获取第一张表格
int beginRow = 2;
int endRow = 2 + doctorVOs.size();
for(int i = 0;beginRow < endRow; beginRow++,i++){
DoctorCountVO vo = doctorVOs.get(i);
XSSFRow row = sheet.getRow(beginRow);
if(row == null){
row = sheet.createRow(beginRow);
XSSFCell firstCell = row.createCell(0);
firstCell.setCellValue(vo.getDoctorName()); XSSFCell secondCell = row.createCell(1);
secondCell.setCellValue(vo.getOutCallFullDay()); XSSFCell thirdCell = row.createCell(2);
thirdCell.setCellValue(vo.getOutCallHalfDay()); XSSFCell forthCell = row.createCell(3);
forthCell.setCellValue(vo.getAccompanyFullDay()); XSSFCell fifthCell = row.createCell(4);
fifthCell.setCellValue(vo.getAccompanyHalfDay());
}
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
workbook.write(os);
workbook.close();
return os.toByteArray();

方法最后会放回byte[]数组,controller层通过response放回给客户端

byte[] bytes = scheduleService.userCountExport(contextPath, doctorVOs);
if(bytes != null){
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename=schedule.xlsx");
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
response.getOutputStream().flush();
response.getOutputStream().close();
}

java-下载excel的更多相关文章

  1. 【小坑】java下载excel文件

    excel文件的导入导出是很常见的功能,这次做了个下载的功能,踩了一些坑,记下来避免以后重复踩…… 1.inputstream序列化问题 Could not write JSON document: ...

  2. java 下载Excel模板

    前端: JSP: <div id="insertBtn" class="MyCssBtn leftBtn" onclick="download( ...

  3. java下载Excel模板(工具类)

    一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...

  4. java下载excel,excel从数据库获取数据

    <!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g ...

  5. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  6. java对excel表格的上传和下载处理

    Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识. 而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为 ...

  7. java的excel表格的导出与下载

    今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下: 控制层: @RequestMapping(value = "excelOut_identifier ...

  8. JAVA web端JS下载excel文件

    JSP代码如下: JSP端引入jquery.easyui.min.js库: <script type="text/javascript" src="<c:ur ...

  9. java实现下载excel功能

    1,获取服务器现有excel文件 public List<Object[]> getObject(String filePath){ log.info("**文件路径为:**&q ...

  10. 360浏览器下载excel问题解决方式

    亲们有没有碰到过今天我遇到的这件事. 如果使用简单的链接.或者get方式提交的表单,去下载excel,那么360浏览器就会有问题. 问题是:它没把我用java生成的excel表格下载,而是去把我的列表 ...

随机推荐

  1. Win10系统修改MAC地址

    本地管理地址,输入想修改的MAC地址后,点确定即完成修改.在CMD窗口中,使用ipconfig 命令可以查看新的MAC地址. 再次钩选不存在,则还原为原来的MAC地址.

  2. css基础回顾-定位:position

    w3school 对position定义和说明是: 定义和用法: position 属性规定元素的定位类型. 说明: 这个属性定义建立元素布局所用的定位机制.任何元素都可以定位,不过绝对或固定元素会生 ...

  3. 简单水池&&迷宫问题

    #include <iostream> #include <stdio.h> #include <cstring> using namespace std; int ...

  4. 排序算法之奇偶排序 JAVA奇偶排序算法

    奇偶排序法的思路是在数组中重复两趟扫描.第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1, 3, 5……).如果它们的关键字的值次序颠倒,就交换它们.第二趟扫描对所有的偶数数据项 ...

  5. 如何在github上传自己的项目

    1.首先在github创建自己的账号. 2.下载github for windows 客户端 (备注:这里我的电脑是windows系统的) ,不要下载错了,网上下载的应该是这样的安装程序 3.安装gi ...

  6. JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法

    转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0. ...

  7. 在birt中解决引用了不存在的绑定出现的问题

    在birt中常出现这个错误,xxx引用了不存在的绑定. 当你选中整个表,然后在下方属性编辑器旁边的绑定中可以看到绑定的字段.不需要的就可以删掉.也可以进行编辑. 想对查出来的数据加条件.可以选中数据明 ...

  8. 使用shiro标签遇到的部分问题的解决思路

    最近几天,在shiro进行系统权限控制.在处理JSP页面的时候,遇到几个问题,纠结好几天,终于成功解决这些问题. 1.使用<shiro:principal>的时候,如何得到整个类的信息? ...

  9. 托盘图标、气泡以及任务栏崩溃后的自动添加——Shell_NotifyIcon

    托盘图标使用函数 Shell_NotifyIcon 创建.修改和删除,参数主要使用 NOTIFYICONDATA 结构. 任务栏启动时会给所有顶层窗口发送 TaskbarCreated 消息,由于不同 ...

  10. QT5-控件-QLineEdit-文本输入控件,用来输入密码什么的还不错,可以和Linux登录一样不移动光标哦

    #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #i ...