- 浏览: 108261 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
qiqibaba1990:
JAVA与JS的数据交互 -
月氏城下:
为什么是5个,不是9个吗?
JSP五大内置对象 -
mida:
有点文字时不时更好了。
JAVA与JS的数据交互 -
pxx199248:
收藏楼,不错
常用JS驗證
ExcelBean.java
public class ExcelBean { private String path; //Excel寫入的路徑名 private String sheetName; //工作表名稱(Excel的左下角) private int row; //行數 private int col; //列數 private List<String> titleList; //列表頭標題 private int[] width; //每列所占寬度 private List dataList; //數據集合 //setter getter }
ExcelUtil.java
package app.other.poi.excel; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** * @version 創建時間:Apr 13, 2009 1:49:49 PM * 類說明:Excel工具類 */ public class ExcelUtil{ private static final Log log = LogFactory.getLog(ExcelUtil.class);//日志 /** * 創建Excel對象 * @param excelBean * @return */ public static HSSFWorkbook creatExcel(ExcelBean excelBean){ HSSFWorkbook wb = new HSSFWorkbook(); //創建Excel工作薄 //在Excel工作薄中建一工作表,默認為缺省值 // HSSFSheet sheet = wb.createSheet(); HSSFSheet sheet = wb.createSheet(excelBean.getSheetName()); //設置工作表各列寬度 // setColumnWidth(sheet, excelBean.getWidth()); //設置字體,樣式 //HSSFFont font = setFont(wb, "宋體"); //HSSFCellStyle style = setCellStyle(wb, font); //設置第一行 List<String> titleList = excelBean.getTitleList(); setRowValue(sheet, titleList, 0); //在索引0的位置創建行(最頂端的行) //設置數據行 List dataList = excelBean.getDataList(); if(dataList != null){ for(int i=0; i<dataList.size(); i++){ List rowList = (List) dataList.get(i); setRowValue(sheet, rowList, i+1); //在索引1的位置創建行(第2行) } } return wb; } /** * 創建Excel對象 * @param excelBean * @param excelBean2 * @return */ public static HSSFWorkbook creatExcel(ExcelBean excelBean, ExcelBean excelBean2){ HSSFWorkbook wb = new HSSFWorkbook(); //創建Excel工作薄 //在Excel工作薄中建一工作表,默認為缺省值 // HSSFSheet sheet = wb.createSheet(); HSSFSheet sheet = wb.createSheet(excelBean.getSheetName()); //設置工作表各列寬度 // setColumnWidth(sheet, excelBean.getWidth()); //設置字體,樣式 //HSSFFont font = setFont(wb, "宋體"); //HSSFCellStyle style = setCellStyle(wb, font); //設置第一行 List<String> titleList = excelBean.getTitleList(); setRowValue(sheet, titleList, 0); //在索引0的位置創建行(最頂端的行) //設置數據行 List dataList = excelBean.getDataList(); if(dataList != null){ for(int i=0; i<dataList.size(); i++){ List rowList = (List) dataList.get(i); setRowValue(sheet, rowList, i+1); //在索引1的位置創建行(第2行) } } HSSFSheet sheet2 = wb.createSheet(excelBean2.getSheetName()); //設置工作表各列寬度 // setColumnWidth(sheet, excelBean.getWidth()); //設置字體,樣式 //HSSFFont font = setFont(wb, "宋體"); //HSSFCellStyle style = setCellStyle(wb, font); //設置第一行 List<String> titleList2 = excelBean2.getTitleList(); setRowValue(sheet2, titleList2, 0); //在索引0的位置創建行(最頂端的行) //設置數據行 List dataList2 = excelBean2.getDataList(); if(dataList2 != null){ for(int i=0; i<dataList2.size(); i++){ List rowList = (List) dataList2.get(i); setRowValue(sheet2, rowList, i+1); //在索引1的位置創建行(第2行) } } return wb; } /** * 寫入到物理地址中 * @param wb * @param path * @return */ public static boolean writeExcel(HSSFWorkbook wb, String path){ boolean flag = true; try{ // Write the output to a file FileOutputStream fileOut = new FileOutputStream(path); wb.write(fileOut); fileOut.close(); log.info("Excel寫入到" + path + ", 成功!"); }catch(Exception e){ log.error("Excel寫入到" + path + ", 失敗!"); flag = false; e.printStackTrace(); } return flag; } /** * 下載Excel * @param wb * @param filename MemberList.xls * @param response * @return */ public static boolean downloadExcel(HSSFWorkbook wb, String filename, HttpServletResponse response){ boolean flag = true; //設置輸入流 OutputStream output = null; try { // 設置響應類型 response.setHeader("Content-disposition", "attachment;filename="+new String(filename.getBytes("GBK"),"ISO-8859-1")); response.setContentType("application/x-msdownload"); output = response.getOutputStream(); wb.write(output);//輸出到網頁中 output.flush(); log.info("下載Excel:" + filename + ", 成功!"); } catch (Exception e) { flag = false; log.info("下載Excel:" + filename + ", 失敗!"); e.printStackTrace(); } finally{ try { output.close(); } catch (IOException e) { e.printStackTrace(); } } return flag; } /** * 設置工作表各列寬度 * @param sheet * @param width */ public static void setColumnWidth(HSSFSheet sheet, int[] width){ for(int i=0;i<width.length;i++){ sheet.setColumnWidth((short)i, (short)(width[i]*256)); } } /** * 設置字體 * @param wb * @param fontName */ public static HSSFFont setFont(HSSFWorkbook wb, String fontName){ HSSFFont font = wb.createFont(); font.setFontName(fontName); //宋體, return font; } /** * 將字體對象賦值給單格樣式對象 * @param wb * @param font * @return */ public static HSSFCellStyle setCellStyle(HSSFWorkbook wb, HSSFFont font){ HSSFCellStyle style = wb.createCellStyle(); style.setFont(font); return style; } /** * 設置行值 * @param sheet * @param List * @return */ public static HSSFSheet setRowValue(HSSFSheet sheet, List<String> list,int rowNo){ if(list != null){ //在索引rowNo的位置創建行 HSSFRow rowTitle = sheet.createRow(rowNo); for(int i= 0 ; i<list.size();i++){ String title = list.get(i); //從索引0的位置開始創建單元格(左上端) HSSFCell cell = rowTitle.createCell((short)i); cell.setCellValue(title); //設置單元格內容 } } return sheet; } /** * 設置行值 * @param sheet * @param List * @return */ public static HSSFSheet setRowValue(HSSFSheet sheet, List<String> list, int rowNo, HSSFCellStyle style){ if(list != null){ //在索引0的位置創建行(最頂端的行) HSSFRow rowTitle = sheet.createRow(rowNo); for(int i= 0 ; i<list.size();i++){ String title = list.get(i); //從索引0的位置開始創建單元格(左上端) HSSFCell cell = rowTitle.createCell((short)i); cell.setCellValue(title); //設置單元格內容 cell.setCellStyle(style);//單元格樣式 } } return sheet; } /** * 下載(从服务器上下载现程的Excel文件) * @param request * @param response * @param path 路径Z:\PowerTest\ * @param fileName 文件名 ExampleFile/UserProfileExample.xls * @throws Exception * @return loadFlag ---true 下載成功, false 下載失敗 */ public static boolean download(HttpServletRequest request, HttpServletResponse response, String path, String fileName) throws Exception{ boolean loadFlag = true; //下載成功標志位 File file = null; InputStream in = null; // 輸入流 OutputStream out = null; // 輸出流 //在下載附件之前設置響應類型和頭部文件 response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(ExcelUtil.subLastStr(fileName, "/"),"UTF-8")); try{ file = new File(path + fileName); //取得文件對像 // 從下載附件創建輸入流,并向請求獲取并寫入(客戶端或網絡)輸出流 in = new BufferedInputStream(new FileInputStream(file)); out = response.getOutputStream(); int readSize = 1024 * 10; //讀取大小 int length = 0; //讀取剩余大小 byte[] readByte = new byte[readSize]; while ((length = in.read(readByte, 0, readSize)) != -1) { out.write(readByte, 0, length); } out.flush(); }catch(Exception e){ loadFlag = false; e.printStackTrace(); }finally{ if(in!=null || out!=null ){ try { in.close(); out.close(); } catch (IOException e) { loadFlag = false; e.printStackTrace(); } } } return loadFlag; } /** * 取得分割符最后的字符串 * @param path 路径 * @param regex '/' * @return */ public static String subLastStr(String path, String regex){ String temp = ""; if(path == null){ temp = ""; }else{ String[] arr = path.split(regex); temp = arr[arr.length-1]; } return temp; } }
实例:
//匯出Excel public void sendExcel(List list,HttpServletResponse response) throws Exception{ ExcelBean excelBean = new ExcelBean(); excelBean.setWidth(new int[3033]); excelBean.setSheetName("會員信息汇出"); // List<String> topNameList = new ArrayList(); // topNameList.add("會員管理"); // excelBean.setTitleList(topNameList);// 設置第一行標題列表 List<String> titleList = new ArrayList(); titleList.add("序號"); titleList.add("帳號"); titleList.add("姓名"); titleList.add("E-Mail"); titleList.add("訂閱電子報"); titleList.add("加入日期"); titleList.add("剩餘影片點數"); List excelList = new ArrayList(); excelBean.setTitleList(titleList);// 設置標題列表 // excelList.add(titleList);// 設置標題列表 int i = 0; //循環取出list的值 for (Iterator iter = list.iterator(); iter.hasNext();) { ++i; Member member = (Member) iter.next(); List rowList = new ArrayList(); rowList.add(String.valueOf(i));//給rowList賦值序號 rowList.add(member.getLoginId());//給rowList賦值帳號 rowList.add(member.getName());//給rowList賦值姓名 rowList.add(member.getEmail());//給rowList賦值E-Mail //先判斷訂閱電子報,如果有值就進行轉換,然後給rowList賦值訂閱電子報 if(member.getEpaper()!=null&&member.getEpaper()!=""){ if("Y".equals(member.getEpaper())){ rowList.add("是"); }else{ rowList.add("否"); } }else{ rowList.add(""); } //先判斷加入日期,如果有值就進行轉換,然後給rowList賦值加入日期 if(member.getCreateDT()!=null){ String dt = String.valueOf(member.getCreateDT()); int dtLen = dt.indexOf(" "); dt = dt.substring(0, dtLen); rowList.add(dt); }else{ rowList.add(""); } rowList.add(member.getSurplusFilmNum());//給rowList賦值剩餘影片點數 excelList.add(rowList); } excelBean.setDataList(excelList); HSSFWorkbook wb = ExcelUtil.creatExcel(excelBean); ExcelUtil.downloadExcel(wb, "member.xls", response); }
发表评论
-
java.lang.OutOfMemoryError: Java heap space 解决方法
2012-09-25 14:40 846java.lang.OutOfMemoryError: ... -
单例模式
2012-09-13 17:26 751概念: java中单例模 ... -
设计模式
2012-09-13 17:25 716设计模式主要分三个类型:创建型、结构型和行为型。 其中创建型有 ... -
小数点
2012-08-27 16:46 788保留两位小数{方法一:{ double c=3.154 ... -
计时器2
2012-08-21 13:48 836Timer类是用来执行 ... -
ngnix.conf配置
2012-07-18 09:20 807# 开多少进程 worker_processes 2; ... -
多维数组
2012-07-12 10:32 697java语言中,数组是一种 ... -
取得下一年时间
2012-07-05 16:16 718Calendar cal = Calendar.get ... -
JSP五大内置对象
2012-07-04 16:00 1283一、Request对象方法 ... -
反射机制学习
2012-05-31 10:50 637JAVA语言中的反射机制: 在Java 运行时 环 ... -
class生成jar包
2012-05-23 16:10 842进入dos操作符窗口 cd进入要打成jar包的class文件 ... -
读取src下properties配置
2012-05-09 10:42 700try { String path = getClas ... -
ibatis与hibernate的区别
2012-04-25 09:14 733Hibernate简介Hibernate是一个开放源代码的对象 ... -
iBATIS教程之快速入门浅析
2012-04-24 17:01 661iBATIS教程要从iBATIS的概 ... -
tomcat外部启动项目
2012-04-13 15:12 858server.xml <Context pa ... -
防止跨域提交表单
2012-04-11 14:47 814public static boolean validate( ... -
Excel操作 >> 导入
2012-04-09 15:28 1120/** * 導入文件(excel) * @auth ... -
計時器
2012-03-31 17:28 728所有类型的 Java 应用程序一般都需要计划重复执行的任务。企 ... -
根据url读取数据并解析(json)
2012-03-30 16:23 1114/** * @param args * @thro ... -
取URL对应的资源
2012-03-30 15:57 739认识IP、认识URL是进行网络编程的第一步。java.net. ...
相关推荐
java 数据库 导出 excel
通过OLE操作实现ABAP导出Excel.
支持各种导出 datatable 自动分页导出 将数据导出到excel 支持各种复制 设置格式
标题说的很清楚,利用asm-3.1.jar,cglib-2.2.jar,commons-io-1.3.2.jar,poi-3.9-20121203.jar 开发的一个工具包。...其中用到字节码编码,反射,excel操作。 主要功能1、自定义列导出excel Main()类为测试用例
资源提供js操作html、table导出生成excel文件,代码简介易懂
简单实用的从html导出excel操作例子
这个是java用poi操作Excel进行导出,并且可以自动换行
java导入导出excel操作(jxl)
用Java语言采用接口设计模式、代理设计模式、工厂设计模式实现对excel中的表实现基本的...使用Java内置的poi jar包实现excel的操作,使用工厂模式、DAO设计模式等,思想很简单,可供设计模式参考,包括代码+文档+jar包
POI操作Excel,将数据导出到Excel表格中去
使用poi从数据库导出excel表的示例
java导入导出excel操作
POI使用excel模板循环输出行到文件并导出的一个小例子
万能的Excel导入导出工具. 支持从List<Map>中导出. ...用到了适配器模式,支持任意类型的数据导入导出,用户还可以自己编写适配器操作自定义的数据类型! 示例参照:https://github.com/hyberbin/J-Excel
使用qt多线程,通过QAxObject将固定格式的文本文件(demo提供了选择原始文件,暂时使用的模拟数据),导出到excel,实现了进度显示
JXL操作EXCEL 数据库导出EXCEL相关文件一些详细资料
C#中,winform中dataGridView导入EXCLE数据,或从dataGridView中导出Excel表格。可以指定导入路径或导出路径。
导出excel业务流程: ---------------------------------------------------------- 1、用户点击按钮向服务器发送请求同时将页面数据一同发送到服务器端 2、服务器端接收请求和数据 3、经过servlet对接收到的数据...
jsp+Servlet实现的最简单的Excel表导入导出数据库的操作