- 浏览: 38713 次
- 性别:
- 来自: 深圳
最新评论
-
ccxw1983:
不错,值得学习的技术
AppFuse 2.0研究(一) -
Wesley.S:
...
Eclipse出现不自动编译的问题解决 -
xuwenjin666:
如果表中的数据有多表的关联呢。
封装POI读取导出Excel
基础数据导出信息类
import java.util.List; public class BaseDataExportInfo { private String sheetTitle; //工作表标题 private String sheetName; //工作表名称 private String workbookFileName; //文件名 private short sheetIndex = (short)0; //创建工作表的顺序 private List tableHead; //表头 private List rowList; //行 Vector v = new Vector(); v.add(i, "");data.add(v); private String cellDataFomat; //设置单元格类型,值请参考HSSFDataFormat内置的数据类型,例如"@"代表文本 public List getRowList() { return rowList; } public void setRowList(List rowList) { this.rowList = rowList; } public String getSheetName() { return sheetName; } public void setSheetName(String sheetName) { this.sheetName = sheetName; } public String getSheetTitle() { return sheetTitle; } public void setSheetTitle(String sheetTitle) { this.sheetTitle = sheetTitle; } public List getTableHead() { return tableHead; } public void setTableHead(List tableHead) { this.tableHead = tableHead; } public String getWorkbookFileName() { return workbookFileName; } public void setWorkbookFileName(String workbookFileName) { this.workbookFileName = workbookFileName; } public short getSheetIndex() { return sheetIndex; } public void setSheetIndex(short sheetIndex) { this.sheetIndex = sheetIndex; } public String getCellDataFomat() { return cellDataFomat; } public void setCellDataFomat(String cellDataFomat) { this.cellDataFomat = cellDataFomat; } }
处理类
import java.io.BufferedOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Vector; 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.HSSFDataFormat; 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; import org.apache.poi.hssf.util.Region; public class ProcessXSL { HSSFWorkbook wb = new HSSFWorkbook(); String workbookFileName = "test.xls"; protected final Log log = LogFactory.getLog(getClass()); public ProcessXSL() { } /** * 创建 Execl 文件 * * @param wb * HSSFWorkbook * @param exportInfo * BaseDataExportInfo */ public void createWorkBookSheet(BaseDataExportInfo exportInfo) { Vector cellList = null; if (exportInfo.getWorkbookFileName() != null) workbookFileName = exportInfo.getWorkbookFileName() + ".xls"; try { HSSFSheet sheet = wb.createSheet(exportInfo.getSheetIndex() + ""); wb.setSheetName(exportInfo.getSheetIndex(), exportInfo .getSheetName(), (short) 1); /** 设置列宽 */ for (int i = 0; i < exportInfo.getTableHead().size(); i++) { if (i == 1 || i == exportInfo.getTableHead().size() - 1) { sheet.setColumnWidth((short) i, (short) 7000); } else { sheet.setColumnWidth((short) i, (short) 4000); } } /** 合并单元格 */ sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) (exportInfo.getTableHead().size() - 1))); /** 表 标题 */ HSSFRow row = sheet.createRow((short) 0); row.setHeight((short) 500); // 设置行高 HSSFFont titleFont = wb.createFont(); titleFont.setFontName("宋体"); titleFont.setFontHeightInPoints((short) 16); titleFont.setBoldweight((short) 20); HSSFCellStyle titleStyle = wb.createCellStyle(); titleStyle.setFont(titleFont); titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); // 居中 row = this.createCell(row, (short) 0, titleStyle, exportInfo .getSheetTitle()); /** 表头 */ HSSFFont headFont = wb.createFont(); headFont.setFontName("宋体"); headFont.setFontHeightInPoints((short) 12); headFont.setBoldweight((short) 20); HSSFCellStyle headStyle = wb.createCellStyle(); headStyle.setFont(headFont); headStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框 headStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 左边框 headStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 右边框 headStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); // 上边框 headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中 HSSFRow row2 = sheet.createRow((short) 1); row2.setHeight((short) 400); // 设置行高 for (int i = 0; i < exportInfo.getTableHead().size(); i++) { row2 = this.createCell(row2, (short) i, headStyle, exportInfo .getTableHead().get(i)); } /** 表体 */ HSSFFont font = wb.createFont(); /** 设置字体样式 */ font.setFontName("宋体"); HSSFCellStyle cellStyle = wb.createCellStyle(); if (exportInfo.getCellDataFomat() != null && !"".equals(exportInfo.getCellDataFomat())) { short stringFormat = HSSFDataFormat.getBuiltinFormat(exportInfo .getCellDataFomat()); if (stringFormat != -1) { cellStyle.setDataFormat(stringFormat); } } cellStyle.setFont(font); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 左边框 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 右边框 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); // 上边框 cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 居左 for (int i = 0; i < exportInfo.getRowList().size(); i++) { cellList = (Vector) exportInfo.getRowList().get(i); HSSFRow row3 = sheet.createRow((short) i + 2); row3.setHeight((short) 300); // 设置行高 for (int j = 0; j < cellList.size(); j++) { row3 = this.createCell(row3, (short) j, cellStyle, cellList .get(j)); } } } catch (Exception ex) { log.info("error while create work book sheet ", ex); } } /** * 创建 包含多个bookSheet 的 Execl 文件 * * @param wb * HSSFWorkbook * @param exportInfo * BaseDataExportInfo */ public void createMoreWorkBookSheet(BaseDataExportInfo exportInfo) { if (exportInfo.getWorkbookFileName() != null) workbookFileName = exportInfo.getWorkbookFileName() + ".xls"; try { for (int n = 0; n < exportInfo.getRowList().size(); n++) { // JOptionPane.showMessageDialog(null,"第" +(n+1)+ "分页!"); HSSFSheet sheet = wb.createSheet(n + ""); wb.setSheetName(n, exportInfo.getSheetName() + " " + (n + 1), (short) 1); /** 设置列宽 */ // 设置第二列和倒数第二类的宽度为7000,其它列宽度为4000 for (int i = 0; i < exportInfo.getTableHead().size(); i++) { if (i == 1 || i == exportInfo.getTableHead().size() - 1) { sheet.setColumnWidth((short) i, (short) 7000); } else { sheet.setColumnWidth((short) i, (short) 4000); } } /** 合并单元格 */ // 生成标题行, Region的四个参数分别对应 (x1,y1,x2,y2) sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) (exportInfo.getTableHead().size() - 1))); /** 表标题 */ HSSFRow row = sheet.createRow((short) 0); row.setHeight((short) 500); // 设置行高 // 格式化表标题 HSSFFont titleFont = wb.createFont(); titleFont.setFontName("宋体"); titleFont.setFontHeightInPoints((short) 16); titleFont.setBoldweight((short) 20); HSSFCellStyle titleStyle = wb.createCellStyle(); titleStyle.setFont(titleFont); titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); // 居中 row = this.createCell(row, (short) 0, titleStyle, exportInfo .getSheetTitle()); /** 表头 */ // 格式化表头 HSSFFont headFont = wb.createFont(); headFont.setFontName("宋体"); headFont.setFontHeightInPoints((short) 12); headFont.setBoldweight((short) 20); HSSFCellStyle headStyle = wb.createCellStyle(); headStyle.setFont(headFont); headStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框 headStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 左边框 headStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 右边框 headStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); // 上边框 headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中 HSSFRow row2 = sheet.createRow((short) 1); row2.setHeight((short) 400); // 设置行高 for (int i = 0; i < exportInfo.getTableHead().size(); i++) { row2 = this.createCell(row2, (short) i, headStyle, exportInfo.getTableHead().get(i)); } /** 表体 */ // 格式化表体 HSSFFont font = wb.createFont(); font.setFontName("宋体"); HSSFCellStyle cellStyle = wb.createCellStyle(); if (exportInfo.getCellDataFomat() != null && !"".equals(exportInfo.getCellDataFomat())) { short stringFormat = HSSFDataFormat .getBuiltinFormat(exportInfo.getCellDataFomat()); if (stringFormat != -1) { cellStyle.setDataFormat(stringFormat); } } cellStyle.setFont(font); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框 cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); // 左边框 cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 右边框 cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); // 上边框 cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 居左 for (int i = 0; i < 98; i++) { if (i < exportInfo.getRowList().size()) { if ((i + n * 100) >= exportInfo.getRowList().size()) break; Vector cellList = null; cellList = (Vector) exportInfo.getRowList().get( i + n * 100); HSSFRow row3 = sheet.createRow((short) i + 2); row3.setHeight((short) 300); // 设置行高 for (int j = 0; j < cellList.size(); j++) { row3 = this.createCell(row3, (short) j, cellStyle, cellList.get(j)); } } } if ((100 * (n + 1) - 1) >= exportInfo.getRowList().size()) break; } } catch (Exception ex) { log.info("error while create work book sheet ", ex); } } /** * 创建单元格 * * * @param row * HSSFRow * @param cellIndex * short * @param cellStyle * HSSFCellStyle * @param cellValue * Object * @return HSSFRow */ public HSSFRow createCell(HSSFRow row, short cellIndex, HSSFCellStyle cellStyle, Object cellValue) { HSSFCell cell = row.createCell((short) cellIndex); try { cell.setEncoding(HSSFCell.ENCODING_UTF_16); if (cellStyle != null) { cell.setCellStyle(cellStyle); } if (cellValue == null) { cell.setCellValue(""); } else if (cellValue instanceof Boolean) { cell.setCellValue(((Boolean) cellValue).booleanValue()); } else if (cellValue instanceof String) { cell.setCellValue((String.valueOf(cellValue))); } else if (cellValue instanceof Date) { cell.setCellValue((Date) cellValue); } else { cell.setCellValue(""); } // log.info("this cell value is " + cellValue); } catch (Exception ex) { log.error("error while execut create cell ", ex); } return row; } /** * 读取Excel 表 * * * @param aSheet * HSSFSheet * @throws Exception * @return List */ public List readWeekBookSheet(HSSFSheet aSheet) throws Exception { List rowList = new ArrayList(); Vector rowVector = null; int rowNum = 1; int cellNum = 1; int maxCellNum = aSheet.getRow(1).getLastCellNum(); try { for (int rowNumOfSheet = 2; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) { rowNum = rowNumOfSheet; if (null != aSheet.getRow(rowNumOfSheet)) { HSSFRow aRow = aSheet.getRow(rowNumOfSheet); rowVector = new Vector(); for (short cellNumOfRow = 0; cellNumOfRow <= maxCellNum; cellNumOfRow++) { cellNum = cellNumOfRow; if (null != aRow.getCell(cellNumOfRow)) { HSSFCell aCell = aRow.getCell(cellNumOfRow); int cellType = aCell.getCellType(); switch (cellType) { case HSSFCell.CELL_TYPE_NUMERIC: // 整形 // rowVector.add(cellNumOfRow, // String.valueOf(aCell.getNumericCellValue()) // .substring(0, // String.valueOf(aCell.getNumericCellValue()).indexOf("."))); rowVector.add(cellNumOfRow, String .valueOf(aCell.getNumericCellValue())); break; case HSSFCell.CELL_TYPE_STRING: // 字符串型 rowVector.add(cellNumOfRow, aCell .getStringCellValue().trim()); break; case HSSFCell.CELL_TYPE_FORMULA: // double 型 rowVector.add(cellNumOfRow, String .valueOf(aCell.getNumericCellValue())); break; case HSSFCell.CELL_TYPE_BLANK: // 空字符 rowVector.add(cellNumOfRow, ""); break; case HSSFCell.CELL_TYPE_BOOLEAN: // 布尔型 rowVector.add(cellNumOfRow, String .valueOf(aCell.getBooleanCellValue())); break; default: rowVector.add(cellNumOfRow, ""); } } else { rowVector.add(cellNumOfRow, ""); } } rowList.add(rowVector); } } } catch (Exception ex) { log.error("error while execut read week book sheet with " + rowNum + " rows and " + cellNum + "cols", ex); throw new Exception(); } return rowList; } /** * 写Execl 文件 * * @param wb * HSSFWorkbook * @param outPutStream * OutputStream */ public void writeWorkBook(HttpServletResponse response) { try { OutputStream outputStream = new BufferedOutputStream(response .getOutputStream()); response.reset(); response.setContentType("application/vnd.ms-excel"); response.setHeader("content-disposition", "attachment;filename=\"" + new String(workbookFileName.getBytes(), response .getCharacterEncoding()) + "\""); wb.write(outputStream); outputStream.close(); } catch (Exception ex) { log.error("error while create work book ", ex); } } }
使用说明
service方法:
public BaseDataExportInfo getOpeXls(SplitPageHelpBean page) { TimeKit date = new TimeKit(); BaseDataExportInfo export = new BaseDataExportInfo(); export.setWorkbookFileName(date.now("short")); export.setSheetTitle("从业资格证-" + date.now("long")); export.setSheetName("从业资格证"); List tableHead = new ArrayList(); tableHead.add("编号"); tableHead.add("资格证号"); tableHead.add("姓名"); tableHead.add("身份证号"); tableHead.add("性别"); tableHead.add("出生日期"); tableHead.add("办证日期"); export.setTableHead(tableHead); List rowList = new ArrayList(); List zgzList = page.getContent(); if (page != null) { for (int j = 0; j < zgzList.size(); j++) { Vector cols = new Vector(); cols.add(0, String.valueOf(j+1)); cols.add(1, ((TippstjjTJZGZ) zgzList.get(j)).getZgzNum()); cols.add(2, ((TippstjjTJZGZ) zgzList.get(j)).getZgzName()); cols.add(3, ((TippstjjTJZGZ) zgzList.get(j)).getZgzSfzNum()); cols.add(4, ((TippstjjTJZGZ) zgzList.get(j)).getZgzSex()); cols.add(5, ((TippstjjTJZGZ) zgzList.get(j)).getZgzBirthday()==null?"":TimeKit.formatDate(((TippstjjTJZGZ) zgzList.get(j)).getZgzBirthday(), "short")); cols.add(6, ((TippstjjTJZGZ) zgzList.get(j)).getZgzDate()==null?"":TimeKit.formatDate(((TippstjjTJZGZ) zgzList.get(j)).getZgzDate(), "short")); // cols.add(4, ( (TippstjjTJZGZ) // zgzList.get(j)).getOpeTime()==null?"":((TippBaseOpelog) // opeLogs.get(j)).getOpeTime().toString()); rowList.add(cols); } } export.setRowList(rowList); return export; }
在Action中调用上边写的service的方法
public ActionForward onSubmit(ActionMapping mapping, Object bean, HttpServletRequest request, HttpServletResponse response) throws Exception { ZgzForm form=(ZgzForm)getForm(); String name=form.getZgzName();//姓名 String zgzNum=form.getZgzNum();//资格证号 String sfzNum=form.getZgzSfzNum();//身份证号 String birthday=form.getZgzBirthday();//生日 String sex=form.getZgzSex();//性别 String zgzDate=form.getZgzDate();//发证日期 ArrayList list=new ArrayList(); String sql=" 1=1"; //对用户条件进行判断 if(name!=null&&!"".equals(name)){ sql=sql+" and {zgzName}=? "; list.add(name); } if(zgzNum!=null&&!"".equals(zgzNum)){ sql=sql+" and {zgzNum}=? "; list.add(zgzNum); } if(sfzNum!=null&&!"".equals(sfzNum)){ sql=sql+" and {zgzSfzNum}=? "; list.add(sfzNum); } if(birthday!=null&&!"".equals(birthday)){ sql=sql+" and {zgzBirthday}=? "; list.add(birthday); } if(sex!=null&&!"".equals(sex)){ sql=sql+" and {zgzSex}=? "; list.add(sex); } if(zgzDate!=null&&!"".equals(zgzDate)){ sql=sql+" and {zgzDate}=? "; list.add(zgzDate); } sql=sql+" order by {zgzDate} desc"; //创建分页对象 SplitPageHelpBean page=new SplitPageHelpBean(); //获取当前页数 int currentPage = form.getCurrentPage(); if (currentPage == 0) { currentPage = 1; } page.setRecordsPerPage(99999); page.setCurrentPage(currentPage); page.setQueryString(sql); page.setValues(list.toArray()); page=stjjService.getObjects(TippstjjTJZGZ.class,page); request.setAttribute("splitPage", page); BaseDataExportInfo export = null; export = stjjService.getOpeXls(page); export.setCellDataFomat("@");//设置单元格类型,值请参考HSSFDataFormat内置的数据类型,例如"@"代表文本 ProcessXSL xsl = new ProcessXSL(); xsl.createWorkBookSheet(export); xsl.writeWorkBook(response); return null; }
参考资料
HSSFDataFormat的数据格式
内置数据类型 |
编号 |
"General" |
0 |
"0" |
1 |
"0.00" |
2 |
"#,##0" |
3 |
"#,##0.00" |
4 |
"($#,##0_);($#,##0)" |
5 |
"($#,##0_);[Red]($#,##0)" |
6 |
"($#,##0.00);($#,##0.00)" |
7 |
"($#,##0.00_);[Red]($#,##0.00)" |
8 |
"0%" |
9 |
"0.00%" |
0xa |
"0.00E+00" |
0xb |
"# ?/?" |
0xc |
"# ??/??" |
0xd |
"m/d/yy" |
0xe |
"d-mmm-yy" |
0xf |
"d-mmm" |
0x10 |
"mmm-yy" |
0x11 |
"h:mm AM/PM" |
0x12 |
"h:mm:ss AM/PM" |
0x13 |
"h:mm" |
0x14 |
"h:mm:ss" |
0x15 |
"m/d/yy h:mm" |
0x16 |
保留为过国际化用 |
0x17 - 0x24 |
"(#,##0_);(#,##0)" |
0x25 |
"(#,##0_);[Red](#,##0)" |
0x26 |
"(#,##0.00_);(#,##0.00)" |
0x27 |
"(#,##0.00_);[Red](#,##0.00)" |
0x28 |
"_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)" |
0x29 |
"_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)" |
0x2a |
"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)" |
0x2b |
"_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)" |
0x2c |
"mm:ss" |
0x2d |
"[h]:mm:ss" |
0x2e |
"mm:ss.0" |
0x2f |
"##0.0E+0" |
0x30 |
"@" - This is text format |
0x31 |
在上面表中,字符串类型所对应的是数据格式为"@"(最后一行),也就是HSSFDataFormat中定义的值为0x31(49)的那行
记录一下遇到的问题
问题一:excel格式问题,导出excel后,双击编辑单元格之后,若是长数字类型的内容会自动使用科学记数法表示,并且超出位数的部分会被截止
解决办法:通过POI设置单元格格式为文本就能解决问题,网上查了一下,一般都是说通过cell.setCellType(HSSFCell.CELL_TYPE_STRING)设置单元格格式,但通过测试这种方法并不起作用,生成后的excel的单元格格式仍然是常规。下边介绍一种可以实现的方法,如下:
HSSFCellStyle cellStyle = wb.createCellStyle(); short stringFormat = HSSFDataFormat.getBuiltinFormat("@"); //请参考HSSFDataFormat内置的数据类型,例如"@"代表文本 cellStyle.setDataFormat(stringFormat);
相关推荐
在这个"poi导出excel demo"项目中,你可能会看到如何组织这些步骤的示例代码,以及如何处理更复杂的功能,比如合并单元格、插入公式、读取数据等。通过学习和理解这个demo,你可以掌握使用Apache POI创建动态、...
例如,你可以使用POI读取Excel数据,然后用dim4j进行数据预处理,最后再用POI将处理后的结果写回Excel。 在实际项目中,为了简化POI的使用,通常会封装一些工具类或者服务,提供简单的接口供其他模块调用,如批量...
使用POI导出Excel文件** 导出Excel文件主要涉及以下几个步骤: - **创建Workbook对象**:这是Excel文件的容器,可以使用`XSSFWorkbook`(针对.xlsx)或`HSSFWorkbook`(针对.xls)创建。 - **创建Sheet对象**:...
Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,特别是在 Java 环境下,它提供了对 Excel 文件的强大支持。本教程将详细讲解如何使用 POI 库来实现 Excel 的导入与导出功能,以及创建和操作...
在IT行业中,Apache POI是一个广泛使用的库,主要用于读取和写入Microsoft Office格式的文件,尤其是Excel。本文将深入探讨如何使用Apache POI来创建和导出具有复杂表头的Excel文件,包括合并行和合并列的功能。首先...
Apache POI 是一个流行的 Java 库,用于读取和写入 Microsoft Office 文件格式,特别是 Excel。在本场景中,我们关注的是如何使用 POI 来创建具有复杂表头的 Excel 导出功能。多表头通常指的是在 Excel 表格中拥有多...
在"基于poi的excel导入导出封装"这个主题中,我们将深入探讨如何使用Apache POI库来实现Excel文件的导入和导出功能。 **一、Apache POI基本概念** 1. **工作簿(Workbook)**: 在Apache POI中,工作簿是Excel文件...
Apache POI 是一个强大的 Java 库,允许开发者创建、修改和读取 Microsoft Office 格式的文件,特别是 Excel、Word 和 PowerPoint。在本文中,我们将深入探讨如何使用 Apache POI 在 Java 环境中实现 Excel 数据的...
例如,我们可以创建一个方法用于导出Excel: ```java import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import ...
POI框架导出Tree结构数据(连接线) 一、问题描述及现象需求说明 ...我们需要对POI框架进行深入了解和分析,然后使用递归和封装的方法来解决模板/指标定位位置的问题、Row对象覆盖的问题和连接线的问题。
**导出Excel的基本步骤:** 1. **创建Workbook对象:** 使用HSSFWorkbook或XSSFWorkbook类,根据目标文件格式选择合适的类。 2. **创建Sheet对象:** 在Workbook中添加Sheet,代表Excel工作表。 3. **创建Row对象:*...
当你需要从网页数据导出Excel时,Easy POI提供了一种方便的方式。首先,你需要将HTML内容转换为表格数据结构,例如使用Jsoup解析HTML获取表格元素。然后,利用Easy POI的API,创建一个Excel工作簿对象,将HTML表格...
以下是一个简单的使用POI导出Excel的例子: 1. 创建一个`PageData`类,它扩展了`HashMap`并实现了`Map`接口,目的是方便从HttpServletRequest中获取参数。这个类的构造函数会遍历请求参数,并将它们存储在一个Map中...
总结来说,"spring mvc easyui-POI导出excel封装源码"项目是将Spring MVC的后端处理能力与EasyUI的前端展示效果以及POI的Excel处理功能相结合,实现了一个功能强大且界面美观的Excel数据导出功能。这个项目对于需要...
这里,我们将详细探讨如何使用Java来读取和导出Excel文件,主要涉及的技术包括Apache POI库和其他相关API的使用。 首先,Apache POI是一个流行的开源Java API,它允许开发人员创建、修改和显示Microsoft Office格式...
导出Excel文件: 1. **创建Workbook和Sheet**:首先,你需要创建一个新的Workbook实例,然后根据需求创建Sheet。 2. **添加Row和Cell**:在Sheet上添加Row,然后在Row中添加Cell。可以通过`Sheet.createRow(int ...
对poi导出excel进行了二次封装,封装后只需要使用模板导出excel就可以了,简单易用,example包里面有几个实例,可以看看,该工程已经上传到github上了,有兴趣的同学可以一起来改进它,...
以下是一个简单的使用POI导出Excel的基本步骤: 1. **初始化Workbook**:首先,我们需要创建一个Workbook对象,这将作为Excel文件的容器。对于老版本的Excel(97-2003格式),我们使用HSSFWorkbook;对于新版本的...
本文将详细讲解如何实现一个自定义的动态导出Excel封装类,以满足各种不同的需求。 首先,我们要理解为什么要自定义封装Excel导出。通常,Java开发中可以使用Apache POI库或JExcelAPI等第三方库来操作Excel。这些库...
**导出Excel数据:** 1. **创建Workbook对象**:使用`WorkbookFactory.create()`或`new XSSFWorkbook()`(对于.xlsx)创建一个新的Excel文件。 2. **添加Sheet对象**:调用Workbook的`createSheet()`方法创建新的...