- 浏览: 621532 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuchttp:
你好如果抓取的的URL里有中文字符,请问要怎么处理,才能正常访 ...
使用jsoup解析一篇文章示例 -
jsdsh:
好人啊!祝你好运
spket-1.6.16.jar下载见附件 -
CindyLiao:
为什么我这里url总是报链接错误,不是传过去的action的值 ...
jquery form插件 上传/导入excel-ajax验证 -
tianpengwei:
谢谢 特别感谢
spket-1.6.16.jar下载见附件 -
smilet:
3Q!
去掉google搜索结果的跳转(http://www.google.com/url?), 而直接用原始链接
说明:
--------------------------------------------------------------------------------------------
从服务器上导出excel文件到本地
在一个excel工作簿中,有5个工单表,每个工作表有1万行数据。
--------------------------------------------------------------------------------------------
使用的jar包在附件中。
效果如图:
--------------------------------------------------------------------------------------------
从服务器上导出excel文件到本地
在一个excel工作簿中,有5个工单表,每个工作表有1万行数据。
--------------------------------------------------------------------------------------------
使用的jar包在附件中。
效果如图:
<%@ page language="java" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>导出excel</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> 导出excel <form action="excel" method="post"> <input type="submit" name="" value="导出"> </form> </body> </html>
<servlet> <servlet-name>outPutExcel</servlet-name> <servlet-class>output.OutputExcel</servlet-class> </servlet> <servlet-mapping> <servlet-name>outPutExcel</servlet-name> <url-pattern>/excel</url-pattern> </servlet-mapping>
package output; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.hssf.util.Region; /** * EXCEL报表工具类. * * @author sun * @version */ public class ExportExcel { private HSSFWorkbook wb = null; private HSSFSheet sheet = null; /** * @param wb * @param sheet */ public ExportExcel(HSSFWorkbook wb, HSSFSheet sheet) { //super(); this.wb = wb; this.sheet = sheet; } /** * 创建通用EXCEL头部 * * @param headString 头部显示的字符 * @param colSum 该报表的列数 */ public void createNormalHead(String headString, int colSum) { HSSFRow row = sheet.createRow(0); // 设置第一行 HSSFCell cell = row.createCell(0); //row.setHeight((short) 1000); // 定义单元格为字符串类型 cell.setCellType(HSSFCell.ENCODING_UTF_16);// 中文处理 cell.setCellValue(new HSSFRichTextString(headString)); // 指定合并区域 /** * public Region(int rowFrom, * short colFrom, * int rowTo, * short colTo) */ sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) colSum)); //定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); //设置单元格水平对齐类型 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //font.setFontName("宋体"); //font.setFontHeight((short) 600); //cellStyle.setFont(font); cell.setCellStyle(cellStyle); } /** * 创建通用报表第二行 * * @param params 统计条件数组 * @param colSum 需要合并到的列索引 */ public void createNormalTwoRow(String[] params, int colSum) { //创建第二行 HSSFRow row1 = sheet.createRow(1); row1.setHeight((short) 400); HSSFCell cell2 = row1.createCell(0); cell2.setCellType(HSSFCell.ENCODING_UTF_16); cell2.setCellValue(new HSSFRichTextString("时间:" + params[0] + "至" + params[1])); // 指定合并区域 /** * public Region(int rowFrom, short colFrom, int rowTo, short colTo) */ sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) colSum)); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); cell2.setCellStyle(cellStyle); } /** * 设置报表标题 * * @param columHeader 标题字符串数组 */ public void createColumHeader(String[] columHeader) { // 设置列头 在第三行 HSSFRow row2 = sheet.createRow(2); // 指定行高 row2.setHeight((short) 600); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); /*cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体 cellStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色. cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); cellStyle.setLeftBorderColor(HSSFColor.BLACK.index); cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); cellStyle.setRightBorderColor(HSSFColor.BLACK.index); cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); cellStyle.setTopBorderColor(HSSFColor.BLACK.index);*/ // 设置单元格背景色 cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); HSSFCell cell3 = null; for (int i = 0; i < columHeader.length; i++) { cell3 = row2.createCell(i); cell3.setCellType(HSSFCell.ENCODING_UTF_16); cell3.setCellStyle(cellStyle); cell3.setCellValue(new HSSFRichTextString(columHeader[i])); } } /** * 创建内容单元格 * * @param wb HSSFWorkbook * @param row HSSFRow * @param col short型的列索引 * @param align 对齐方式 * @param val 列值 */ public void cteateCell(HSSFWorkbook wb, HSSFRow row, int col,short align, String val) { HSSFCell cell = row.createCell(col); cell.setCellType(HSSFCell.ENCODING_UTF_16); cell.setCellValue(new HSSFRichTextString(val)); HSSFCellStyle cellstyle = wb.createCellStyle(); cellstyle.setAlignment(align); cell.setCellStyle(cellstyle); } /** * 创建合计行 * @param colSum 需要合并到的列索引 * @param cellValue */ public void createLastSumRow(int colSum, String[] cellValue) { HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); //获取工作表最后一行 HSSFRow lastRow = sheet.createRow((short) (sheet.getLastRowNum() + 1)); HSSFCell sumCell = lastRow.createCell(0); sumCell.setCellValue(new HSSFRichTextString("合计")); sumCell.setCellStyle(cellStyle); //合并 最后一行的第零列-最后一行的第一列 sheet.addMergedRegion(new Region(sheet.getLastRowNum(), (short) 0,sheet.getLastRowNum(), (short) colSum));// 指定合并区域 for (int i = 2; i < (cellValue.length + 2); i++) { //定义最后一行的第三列 sumCell = lastRow.createCell(i); sumCell.setCellStyle(cellStyle); //定义数组 从0开始。 sumCell.setCellValue(new HSSFRichTextString(cellValue[i-2])); } } /** * 输入EXCEL文件 * * @param fileName 文件名 */ public void outputExcel(String fileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(new File(fileName)); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //***************************************************** // set && get //***************************************************** /** * @return the sheet */ public HSSFSheet getSheet() { return sheet; } /** * @param sheet the sheet to set */ public void setSheet(HSSFSheet sheet) { this.sheet = sheet; } /** * @return the wb */ public HSSFWorkbook getWb() { return wb; } /** * @param wb the wb to set */ public void setWb(HSSFWorkbook wb) { this.wb = wb; } }
package output; public class Domain { private String one; private String two; private String three; private String four; private String five; private String six; private String seven; private String eight; private String nine; private String ten; public String getOne() { return one; } public void setOne(String one) { this.one = one; } public String getTwo() { return two; } public void setTwo(String two) { this.two = two; } public String getThree() { return three; } public void setThree(String three) { this.three = three; } public String getFour() { return four; } public void setFour(String four) { this.four = four; } public String getFive() { return five; } public void setFive(String five) { this.five = five; } public String getSix() { return six; } public void setSix(String six) { this.six = six; } public String getSeven() { return seven; } public void setSeven(String seven) { this.seven = seven; } public String getEight() { return eight; } public void setEight(String eight) { this.eight = eight; } public String getNine() { return nine; } public void setNine(String nine) { this.nine = nine; } public String getTen() { return ten; } public void setTen(String ten) { this.ten = ten; } }
package output; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class OutputExcel extends HttpServlet{ private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("helloworld"); List<Domain> list = new ArrayList<Domain>(); int max = 10000; String str = "测试长度"; for(int i=0; i<max; i++){ Domain domain = new Domain(); domain.setOne(str+"1"); domain.setTwo(str+"2"); domain.setThree(str+"3"); domain.setFour(str+"4"); domain.setFive(str+"5"); domain.setSix(str+"6"); domain.setSeven(str+"7"); domain.setEight(str+"8"); domain.setNine(str+"9"); domain.setTen(str+"10"); list.add(domain); } String fileName = "导出Excel.xls"; fileName = new String(fileName.getBytes("GBK"),"iso8859-1"); response.reset(); response.setHeader("Content-Disposition","attachment;filename="+fileName);//指定下载的文件名 response.setContentType("application/vnd.ms-excel"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); OutputStream output = response.getOutputStream(); BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output); //定义单元格报头 String worksheetTitle = "Excel导出"; HSSFWorkbook wb = new HSSFWorkbook(); //创建列标头LIST List<String> fialList = new ArrayList<String>(); fialList.add("列1"); fialList.add("列2"); fialList.add("列3"); fialList.add("列4"); fialList.add("列5"); fialList.add("列6"); fialList.add("列7"); fialList.add("列8"); fialList.add("列9"); fialList.add("列10"); // 计算该报表的列数 int number = fialList.size()-1; //================================================================== // 创建单元格样式 HSSFCellStyle cellStyleTitle = wb.createCellStyle(); // 指定单元格居中对齐 cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格垂直居中对齐 cellStyleTitle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 指定当单元格内容显示不下时自动换行 cellStyleTitle.setWrapText(true); //------------------------------------------------------------------ HSSFCellStyle cellStyle = wb.createCellStyle(); // 指定单元格居中对齐 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格垂直居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 指定当单元格内容显示不下时自动换行 cellStyle.setWrapText(true); //------------------------------------------------------------------ // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 200); cellStyleTitle.setFont(font); for(int z=0; z<5; z++){ //工作表名 String worksheet = "表"+(z+1); HSSFSheet sheet = wb.createSheet(worksheet); ExportExcel exportExcel = new ExportExcel(wb, sheet); // 创建报表头部 exportExcel.createNormalHead(worksheetTitle, number); //定义第一行 HSSFRow row1 = sheet.createRow(1); HSSFCell cell1 = null; for(int i = 0; i < fialList.size(); i++) { cell1 = row1.createCell(i); cell1.setCellStyle(cellStyleTitle); cell1.setCellValue(new HSSFRichTextString(worksheet+fialList.get(i).toString())); } HSSFRow row = sheet.createRow(2); HSSFCell cell = row.createCell(1); Domain domain = new Domain(); for(int i=0; i<list.size(); i++){ domain = list.get(i); row = sheet.createRow(i+2); cell = row.createCell(0); cell.setCellStyle(cellStyle); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getOne())); cell = row.createCell(1); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getTwo())); cell = row.createCell(2); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getThree())); cell = row.createCell(3); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getFour())); cell = row.createCell(4); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getFive())); cell = row.createCell(5); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getSix())); cell = row.createCell(6); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getSeven())); cell = row.createCell(7); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getEight())); cell = row.createCell(8); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getNine())); cell = row.createCell(9); cell.setCellValue(new HSSFRichTextString(worksheet+domain.getTen())); } } try { bufferedOutPut.flush(); wb.write(bufferedOutPut); bufferedOutPut.close(); } catch (IOException e) { e.printStackTrace(); System.out.println( "Output is closed "); } finally { list.clear(); } } }
发表评论
-
jquery form插件 上传/导入excel-ajax验证
2013-01-30 21:48 21449为了看着界面舒服,我这里用到了bootstrap,还用到jqu ... -
【转】JVM垃圾回收机制
2012-12-11 22:04 808每个Java程序员迟早都会碰到下面这个错误: jav ... -
【转】Java防止SQL注入
2012-10-09 17:36 877SQL 注入简介: ... -
【转】JSTL 标签库详细介绍资料
2012-08-16 11:05 767前言从jsp 1.1规范开始,jsp就支持在jsp中使用 ... -
【转】使用 JAVA 中的动态代理实现数据库连接池
2012-08-13 17:13 846转载地址:http://www.ibm.com/develop ... -
jsp 理解301和302的区别
2012-05-21 17:35 2594301状态码: response.setStatus(30 ... -
jsp - 下载gzip压缩文件
2012-05-18 16:01 1256out.clearBuffer(); //获取文件地址 ... -
【转】Java 性能优化之 String 篇
2012-05-16 12:23 947转载地址:http://www.ibm.com/develop ... -
收藏Google Analytics api - java版地址
2012-03-13 10:38 1171收藏Google Analytics api java版地址: ... -
使用jsoup解析一篇文章示例
2012-01-17 11:27 4443jar包下载地址:http://jsoup.org/downl ... -
java文件上传和上传excel后并解析出来的小工具
2011-11-20 18:12 1413支持上传中文文件名及数据; 支持上传gif,jpg,png, ... -
【转】使用 jsoup 对 HTML 文档进行解析和操作
2011-11-10 15:52 569转载地址:http://www.ibm.com/develop ... -
【转】深入分析 Java I/O 的工作机制
2011-11-01 22:15 665转载地址:http://www.ibm.com/develop ... -
【转】实战 Lucene,第 1 部分: 初识 Lucene
2011-10-22 00:49 773转载地址:http://www.ibm.com/develop ... -
【转】几种任务调度的 Java 实现方法与比较
2011-09-11 19:14 1027简介: 综观目前的 Web ... -
【转】JVM内存回收理论与实现
2011-09-05 18:27 856在本篇中,我们将继续 ... -
解决ajax传到jsp乱码 解决方法之一
2011-09-05 12:00 839解决ajax传到jsp乱码 解决方法之一 ajax页面和js ... -
【转】Servlet 工作原理解析
2011-09-02 09:23 641转载地址:http://www.ibm.com/develop ... -
【转】理解Java ClassLoader机制
2011-07-28 09:27 771当JVM(Java虚拟机)启动 ... -
【转】程序员技术练级攻略
2011-07-19 18:24 718月光博客6月12日发表了《写给新手程序员的一封信 》,翻译自 ...
相关推荐
亲测OK,可直接导出excel文件,csv文件;不用指定下载路劲,直接下载到本地,服务器不用生成临时文件。
1.浏览器点击导出按钮,直接下载到本地,服务器不生成临时文件; 2.生成csv,中文无乱码,数据不会科学计数法; 3.支持大数据下载; 4.后台服务java语言实现,前端不限制; 5.前端代码: [removed]void(0)" class=...
导出Mysql数据库中表数据成excel文件。 主要是解决像我现在遇到的问题,放数据的服务器不能登陆,但是又要到处很多数据到本地带来的麻烦。 这个版本增加了实时查看数据功能。
本地上传 $file = $request->file('file', 0);//文件名称 /** 判断文件格式以及各种错误 **/ //获取文件的扩展名 $ext = $file->getClientOriginalExtension(); //获取文件的绝对路径 $path = $file->...
服务器文件 工作薄引用 加密文档 你可以读写加密文件。条件是你需要知道文件的密码。 计算 可计算单元以及整个工作薄 计算引擎将依据单元进行计算。 可读取引用的外部工作薄。这通过一个特殊的快速查询程序...
用asp.net做了一简单的游戏管理后台,涉及到了上传Excel导入数据的功能,在本地开发实现都好好的,可已上传的服务器上就悲剧了,下面有个不错的解决方法,大家可以参考下
我们想要导出的是表格中的数据,表格中的数据又是从服务器来的,那我们把服务器上的数据下到本地保存成文件不就可以了. 服务端实现代码: 代码如下:ServletOutputStream out = null;try{//设置输出csv的头信息 ...
我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实就是调用mysqldump。不幸的是,出现了版本不一致的错误。 错误没治了,最终找到解决方案,可以指定mysql的...
10、访问共享文件的日志情况可以导出为其他格式,如word、excel等,便于第三方审计。 11、集成开放的功能扩展接口,可以与我公司的商用安全计算机、外来电脑控制系统相互配合,强化对共享文件的保护。 四、...
原理:应用dsoframer插件在线编辑后保存至本地,然后上传到服务器并覆盖同名文件。 支持excel导入、导出、在线编辑、保存到服务器。 系统更新:http://www.chnetter.com 使用说明: 请根据自己虚拟主机或VPS的...
原理:应用dsoframer插件在线编辑后保存至本地,然后上传到服务器并覆盖同名文件。 支持excel导入、导出、在线编辑、保存到服务器。 系统更新:http://www.chnetter.com 使用说明: 请根据自己虚拟...
用户不仅可以把容器提交到公共服务器上,还可以将容器导出到本地文件系统中。同样,我们也可以将导出的容器重新导入到Docker环境中去。 如果要导出本地某个容器,可以使用 Docker export 命令,可以使用 docker ...
近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL Server2005中,供存储过程计算。 由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。...
或者对其修改、删除的共享文件进行还原、恢复等风险应对举措),同时用户对共享文件的所有操作记录都将存储到服务器的数据库中,并可以导出成word、excel等格式,便于提供给相关人员进行审计。 三、功能介绍 1、...
原代码模块: 1、在线编辑报表(来源于网络) 2、php简单文件上传源代码(来源于网络) 3、regdsoframer.exe(CHN网客原创) 源码分析: 本系统采用微软的... 支持excel导入、导出、在线编辑、保存到服务器。
库存管理系统原代码模块: 1、在线编辑报表(来源于网络) 2、php简单文件上传源... 原理:应用dsoframer插件在线编辑后保存至本地,然后上传到服务器并覆盖同名文件。 支持excel导入、导出、在线编辑、保存到服务器。
(一)轻松支持表头JSON设计,可以把JSON放在文件里(表头模版只是个字符串),更小的excel模版, 1. 边框,字体属性,背景颜色,宽高,复杂表头等 2. 更多 具体请参照附录(一) (二)基于NPOI,服务器免装...
MyNPOI是 AaronYang(茗洋)基于开源Excel导出的组件NPOI二次封装,使得.net方向 Excel操作更加简单的一个类库。它不是重写NOPI,对NOPI的源码进行改写,这里保留NPOI的版权声明。最低框架使用.net framework4.0 ...
3、创建选定文件夹下的文件目录:创建选定文件夹下所有文件目录,还可以包含该文件夹下所有子文件夹内的所有文件目录,也可以选择性的创建只创建Word、Excel文件目录,点击目录可轻松打开相当的文件。目录创建后,...