- 浏览: 23709 次
- 性别:
- 来自: 大连
最新评论
-
suhongliang5332:
liu_bia 写道这个显示的界面是怎样的?可以直接在html ...
Struts2+freemarker实现动态表头输出 -
liu_bia:
这个显示的界面是怎样的?
Struts2+freemarker实现动态表头输出 -
suhongliang5332:
模板模式(Template Method) -
suhongliang5332:
模板模式(Template Method)
导入包
dom4j-1.6.1.jar
poi-3.9-20121203.jar
poi-ooxml-3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar
stax-api-1.0.1.jar
xmlbeans-2.3.0.jar
------------Excel导出------------------
Excel接口类
Excel抽象类
Excel2007
Excel2003
调用
------------Excel导入------------------
上传Excel文件
读取Excel文件
dom4j-1.6.1.jar
poi-3.9-20121203.jar
poi-ooxml-3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar
stax-api-1.0.1.jar
xmlbeans-2.3.0.jar
------------Excel导出------------------
Excel接口类
package com.XXX.lib.global.excel; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import com.XXXX.lib.fintface.IdentiIntface; public interface ExcelObjIntface { /** * excel下载 */ public void excelDownLoad(); /** * 创建一个Excel * @return */ public Workbook creatWorkBook(); /** * 创建一个sheet数组 * @param sheetNames * @return */ public ArrayList<Sheet> creatSheet(ArrayList<String> sheetNames); /** * 创建一个sheet * @param sheetName * @return */ public Sheet creatSheet(String sheetName); /** * 创建一个简单头部 * @param sheet * @param headValues * @return */ public int creatSheetHeads(Sheet sheet,List<String> headValues); /** * 根据HashMap生成数据 * @param sheet sheet * @param cellValues * @return */ public int creatSheetCellsByMap(Sheet sheet, List<Map<Object, Object>> cellValues); /** * 根据模型生成数据 * @param sheet sheet * @param model 模型列表 * @return 生成最后一条数据所在的行数 */ public int creatSheetCellsByModel(Sheet sheet,List<IdentiIntface> model); /** * 结束并生成Excel * @param ExcelName,Excel的名称 */ public void finishWorkBook(String ExcelName); /** * 获得一个workBook; * @param ExcelFullName * @return */ public Workbook getReadExcel(String ExcelFullName); /** * 获得一个sheet * @param readwb * @return */ public Sheet getReadSheet(int sheetAt); /** * 获得一个制定的值 * @param sheet * @param row * @param cell * @return */ public String getReadCellValue(Sheet sheet,int rowNum,int cellNum); public void init(); }
Excel抽象类
package com.XXX.lib.global.excel; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import com.XXX.lib.fintface.IdentiIntface; import com.XXX.lib.global.constant.ExcelConstant; import com.XXX.lib.global.util.ClassUtil; /** * http://poi.apache.org/spreadsheet/quick-guide.html#NewSheet * Excel父类,抽象类 */ public abstract class ExcelObjAbstract implements ExcelObjIntface{ protected Workbook wb; private Workbook readwb; private List<Object> heads; private int startCols;//输出开始列 private int startRows;//输出开始行 private int headHeight;//设置头部高度 private int bodyHeight;//设置身体高度 private String Suffix; public ExcelObjAbstract(){ this.excelDownLoad(); } @Override public ArrayList<Sheet> creatSheet(ArrayList<String> sheetNames) { ArrayList<Sheet> sheetArray = new ArrayList<Sheet>(); for (String sheetName : sheetNames) { Sheet tmpsheet = wb.createSheet(sheetName); sheetArray.add(tmpsheet); } return sheetArray; } @Override public Sheet creatSheet(String sheetName) { Sheet sheet = wb.createSheet(sheetName); return sheet; } @Override public int creatSheetHeads(Sheet sheet, List<String> headValues) { HashMap<String, CellStyle> styles = this.headStyle(); heads = new ArrayList<Object>(); Row row = sheet.createRow(startRows);//第一行 if(headHeight!=0){ row.setHeight((short)headHeight); } for(int i=0;i<headValues.size();i++) { String[] keys = headValues.get(i).split(","); heads.add(keys[0]);//把列名放到集合中 Cell cell = row.createCell(i+startCols); cell.setCellStyle(styles.get("headBlack4")); if(keys.length>=2){//第二项存在[并且语言为中文] cell.setCellValue(keys[1]); } // else if(keys.length>=3){//第三项存在[并且语言为韩文] // cell.setCellValue(keys[2]); // } if(keys.length>=4){//第四项存在,就设置列宽[注:第四个字段为最大字符串长度] sheet.setColumnWidth(i+startCols, Integer.parseInt(keys[3])*256); } //默认 } return headValues.size(); } @Override public int creatSheetCellsByMap(Sheet sheet, List<Map<Object, Object>> cellValues) { HashMap<String, CellStyle> styles = this.bodyStyle(); for(int i=0;i<cellValues.size();i++) { Row row = sheet.createRow(startRows+i+1);//因为第一行为题目,故从第二行开始输出正文 if(bodyHeight!=0){ row.setHeight((short)bodyHeight); } for(int j=0;j<cellValues.get(i).size();j++) { Cell cell = row.createCell(j); Object eValue = cellValues.get(i).get(heads.get(j)); if(eValue==null){ eValue = " "; } cell.setCellValue(eValue.toString()); cell.setCellStyle(styles.get("bodyBlack4")); } } return cellValues.size(); } @Override public int creatSheetCellsByModel(Sheet sheet,List<IdentiIntface> modelList){ HashMap<String, CellStyle> styles = this.bodyStyle(); for(int i=0;i<modelList.size();i++) { Row row = sheet.createRow(startRows+i+1);//因为第一行为题目,故从第二行开始输出正文 if(bodyHeight!=0){ row.setHeight((short)bodyHeight); } for(int j=0;j<heads.size();j++) { Cell cell = row.createCell(startCols+j); //通过字符串获得属性值 Object eValue = ClassUtil.getFieldValueByName(heads.get(j).toString(),modelList.get(i)); if(eValue==null){ eValue = " "; } cell.setCellValue(eValue.toString()); cell.setCellStyle(styles.get("bodyBlack4")); } } return modelList.size(); } @Override public void finishWorkBook(String ExcelName) { String realExcelName = ExcelConstant.DEFAULT_OUT_PATH+ExcelName+Suffix; try { FileOutputStream fileOut = new FileOutputStream(realExcelName); wb.write(fileOut); fileOut.close(); } catch (Exception e) { e.printStackTrace(); } } //内容样式集合 private HashMap<String, CellStyle> bodyStyle(){ HashMap<String, CellStyle> styles = new HashMap<String, CellStyle>(); //内容样式一: 四个边框 黑色,无底色,上下居中,左右居中 CellStyle style = wb.createCellStyle(); //设置字体 Font headFont = wb.createFont(); headFont.setFontHeightInPoints((short)9); headFont.setColor(IndexedColors.BLACK.getIndex()); headFont.setFontName("宋体"); style.setFont(headFont); //设置边框 style.setBorderBottom(CellStyle.BORDER_THIN); style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderLeft(CellStyle.BORDER_THIN); style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderRight(CellStyle.BORDER_THIN); style.setRightBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderTop(CellStyle.BORDER_THIN); style.setTopBorderColor(IndexedColors.BLACK.getIndex()); //设置居中 style.setAlignment(CellStyle.ALIGN_CENTER); style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); styles.put("bodyBlack4", style); return styles; } //头部样式集合 private HashMap<String, CellStyle> headStyle(){ HashMap<String, CellStyle> styles = new HashMap<String, CellStyle>(); // 头部样式一: 四个边框 黑色,深灰色底色,上下居中,左右居中 CellStyle style = wb.createCellStyle(); //设置字体 Font headFont = wb.createFont(); headFont.setFontHeightInPoints((short)11); headFont.setBoldweight(Font.BOLDWEIGHT_BOLD); headFont.setColor(IndexedColors.BLACK.getIndex()); headFont.setFontName("宋体"); style.setFont(headFont); //设置边框 style.setBorderBottom(CellStyle.BORDER_THIN); style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderLeft(CellStyle.BORDER_THIN); style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderRight(CellStyle.BORDER_THIN); style.setRightBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderTop(CellStyle.BORDER_THIN); style.setTopBorderColor(IndexedColors.BLACK.getIndex()); //设置背景颜色 style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); style.setFillPattern(CellStyle.SOLID_FOREGROUND); //设置居中 style.setAlignment(CellStyle.ALIGN_CENTER); style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); styles.put("headBlack4", style); return styles; } @Override public Workbook getReadExcel(String ExcelFullName) { try{ InputStream inp = new FileInputStream(ExcelFullName); readwb = WorkbookFactory.create(inp); }catch (Exception e) { e.printStackTrace(); } return readwb; } @Override public Sheet getReadSheet(int sheetAt) { return readwb.getSheetAt(sheetAt); } @Override public String getReadCellValue(Sheet sheet, int rowNum, int cellNum) { Row row = sheet.getRow(rowNum); Cell cell = row.getCell(cellNum); return cell.toString(); } @Override public void excelDownLoad() { this.init(); this.creatWorkBook(); this.setStartColsRows(1, 1); } /** * 集中设置开始行列 * @param startCols * @param startRows */ public void setStartColsRows(int startCols,int startRows){ this.setStartCols(startCols); this.setStartRows(startRows); } /** * 集中设置高度 * @param headHeight * @param bodyHeight */ public void setHeadBodyHeight(int headHeight,int bodyHeight){ this.setHeadHeight(headHeight); this.setBodyHeight(bodyHeight); } public int getStartCols() { return startCols; } public void setStartCols(int startCols) { this.startCols = startCols; } public int getStartRows() { return startRows; } public void setStartRows(int startRows) { this.startRows = startRows; } public String getSuffix() { return Suffix; } public void setSuffix(String suffix) { Suffix = suffix; } public int getHeadHeight() { return headHeight; } public void setHeadHeight(int headHeight) { this.headHeight = headHeight; } public int getBodyHeight() { return bodyHeight; } public void setBodyHeight(int bodyHeight) { this.bodyHeight = bodyHeight; } }
Excel2007
package com.XXX.lib.global.excel; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Excel2007 extends ExcelObjAbstract{ public Excel2007(){ super(); } @Override public Workbook creatWorkBook() { wb = new XSSFWorkbook(); return wb; } public void init(){ super.setSuffix(".xlsx"); } }
Excel2003
package com.XXX.lib.global.excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; public class Excel2003 extends ExcelObjAbstract{ public Excel2003(){ super(); } @Override public Workbook creatWorkBook() { wb = new HSSFWorkbook(); return wb; } public void init(){ super.setSuffix(".xls"); } }
调用
String fj = excelDate.format(new Date()); List<String> headMas= new ArrayList<String>(); headMas.add("lodging_id,xx,i,20"); headMas.add("room_count,xx,i"); String fileName = "xx"+fj; Excel2007 excel2007 = new Excel2007(); Sheet sheet = excel2007.creatSheet("xx"); excel2007.creatSheetHeads(sheet,headMas); excel2007.creatSheetCellsByModel(sheet, result); excel2007.finishWorkBook(fileName);
------------Excel导入------------------
上传Excel文件
public String fileUpload(){ File[] srcfiles = updExcel; if( srcfiles != null ){ for(int i=0;i<srcfiles.length;i++){ int fileId = lodgService.seqkey();//唯一id SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String tmpStr = sdf.format(new Date()); String tmpYyyymm = tmpStr; String fileName = updExcelFileName[i];//文件名称 String extension = FileUtil.getFileExtension(fileName);//类型 if(extension.equals(".xlsm")){ String newFileName = "xxxx"+fileId+".xlsm";//新文件名 String filePath = Constant.FILE_DEFAULT_UPLOAD + tmpYyyymm + "_" + newFileName; File file = new File(filePath); FileUtil.copy(updExcel[i], file); if(excelInAppoint(filePath)){ this.setInfoString("Excel导入成功"); }else{ this.setInfoString("Excel导入失败"); } } } } search(); return "fileUpload"; }
读取Excel文件
private boolean excelInAppoint(String filePath){ Excel2007 excel2007 = new Excel2007(); excel2007.getReadExcel(filePath); Sheet sheet = excel2007.getReadSheet(0); //TODO 生成服务器端校验码 String testStr = excel2007.getReadCellValue(sheet, 1, 2);//获得客户端校验码 String[] testArr = testStr.split("-"); SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String tmpStr = sdf.format(new Date()); int totleCols = Integer.parseInt(testArr[4]); if( tmpStr.equals(testArr[0]) && testArr[1].equals("0")){ for(int i=4;i<totleCols;i++){//遍历所有行 //TODO 插入数据 lodgModel.setLodging_id(excel2007.getReadCellValue(sheet, i, 1)); lodgModel.setAp_date(excel2007.getReadCellValue(sheet, i, 2)); lodgModel.setAp_code(excel2007.getReadCellValue(sheet, i, 3)); lodgModel.setCuser(excel2007.getReadCellValue(sheet, i, 4)); lodgModel.setStatus(excel2007.getReadCellValue(sheet, i, 5)); lodgModel.setEmpno(excel2007.getReadCellValue(sheet, i, 6)); empInto(); } return true; }else{ return false; } }
发表评论
-
css3再学习
2014-09-04 08:55 0引言: 最近重新学习了css,发现自己许多 ... -
JqGrid的Java模板类
2013-06-28 16:14 1011这段时间一直在使用Spring+JqGrid+Mybatis ... -
全新的梦
2013-06-24 17:28 0项目管理软件:redmine 统一邮箱:(姓名全拼)ln ... -
Struts2+freemarker实现动态表头输出
2013-05-09 15:07 2004首先创建一个树的节点 package com.stxda ... -
Spring3.2.2开发与整合+整合JSTL
2013-05-08 13:08 1260一个新项目是用spring来开发的,我也是第一次接触,但是感 ... -
Struts2整合图表工具 JFreeChart
2013-04-15 17:18 10221首先下载和安装最新的jcommon http://so ... -
Java单元测试与Jutil详解(二) 开发步骤
2013-01-29 10:55 14421.Jutil的开发流程 一)编写单元级测试代码-> ... -
Java单元测试与Jutil详解(一) 简介
2013-01-28 17:27 13551.什么是单元测试 单元测试(unit testing) ... -
Struts2 Action的返回结果类型
2013-01-25 11:39 1262已配置结果类型名 类 名 描 述 disp ... -
Struts2的异常和错误界面处理
2013-01-25 11:20 0asdasaaaaaaaaa http://commun ... -
Struts2 多条数据保存的实现
2013-01-23 09:02 1110在企业开发过程中,经常会遇到多条数据,需要同时保存或者添加的问 ... -
Strtus2 的分页实现(一)
2013-01-23 07:47 837第一,导入js function showPage ... -
Struts2+Mybatis+Freemarker+Tiles架构灵活的开发框架(五)
2013-01-22 16:49 1045推荐的文件分层结构如下 com.XXX.lib.action ... -
Struts2+Mybatis+Freemarker+Tiles架构灵活的开发框架(四)
2013-01-22 15:48 875接着继续来配置mybatis 第一,导入包 clas ... -
Struts2+Mybatis+Freemarker+Tiles架构灵活的开发框架(三)
2013-01-22 15:26 1404接着上面继续,这次我们来配置freemarker 第一,修改w ... -
Struts2+Mybatis+Freemarker+Tiles架构灵活的开发框架(二)
2013-01-22 14:44 1629接着上面继续,这次我们来配置tiles 第一,导入包 ... -
Struts2+Mybatis+Freemarker+Tiles架构灵活的开发框架(一)
2013-01-22 13:00 1485本文主要介绍如何架构一个可扩展的系统开发框架。 其中Stru ...
相关推荐
Java中的Excel操作是许多开发人员在处理数据时经常会遇到的需求,尤其在数据分析、报表生成或者数据导入导出的场景中。jExcelAPI是一款强大的开源Java库,它允许开发者使用Java来读取、写入和修改Microsoft Excel...
自己封装的excel导出/导入,可以根据注解来导出excel.本项目一共有13个类,里面还包含了一个反射工具,一个编码工具,10分值了。下面是测试代码 public class Test { public static void main(String[] arg) throws ...
poi操作excel工具类,excel导入,excel导出各种格式,如List<HashMap,Object>>,List格式,使用方法见:https://blog.csdn.net/lingyancangqiong中的excel工具类
后台方法使用Java语言实现,使用了 Struts 2 框架的Action类来处理文件上传和导入操作。方法名为importExcelData,返回类型为Renderer,用于处理文件上传和导入结果。 文件上传和导入过程 文件上传和导入过程可以...
"java excl 导入导出"这个主题主要涉及到如何使用Java来实现Excel文件的导入和导出功能。在这个示例中,我们有三个关键组件:`ImportExl.java`、`ExportExl.java`和API说明文档,以及可能用到的一些第三方库的jar包...
Struts2是一款强大的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)开发模式,使得Web应用的构建更加简洁、高效。REST(Representational State Transfer)是一种架构风格,用于构建可...
根据excel模板动态导出数据库数据 package text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet....
### JSP导出Excel并支持分Sheet导出的方法详解 #### 概述 在Web开发领域,特别是使用Java Server Pages (JSP)进行后端处理的应用程序中,经常需要将数据库中的数据导出到Excel文件中供用户下载或进一步处理。这种...
2. **第三方库支持**:由于Android原生不支持直接读写Excel文件,通常需要依赖第三方库,如Apache POI库的Android版本(如Apache POI-OOXML-Schemas和Apache POI-ASSEMBLY)。不过,这些库体积较大,不适合对内存和...
- **HashMap**: 支持一个`null`键和任意数量的`null`值。这意味着`HashMap`允许用户更加灵活地处理可能存在的`null`值情况。 #### 3. 数组大小与扩容策略 - **HashMap**: - 默认大小为16,且大小总是2的幂。这是...
总的来说,这个"Android导入导出txt通讯录工具"涵盖了Android开发中的多个关键知识点,包括但不限于ContentProvider和ContentResolver的使用、文件I/O操作、Java数据结构、用户界面设计、权限管理等。对于想要深入...
Java 实现 Excel 的导入和导出 Java 实现 Excel 的导入和导出是 Java 开发中常见的需求,特别是在企业级应用中,需要将数据导入或导出到 Excel 表格中。下面将详细介绍 Java 实现 Excel 的导入和导出的相关知识点。...
综上所述,实现“完整的上传,excel导入mysql数据库”涉及到一系列技术步骤,包括使用POI处理Excel文件,SpringMVC处理文件上传请求,分批导入和性能优化,以及数据库操作和错误处理。掌握这些技能对于构建高效且...
4. **导出报表**:`JasperExportManager.exportReportToPdfFile()`, `JasperExportManager.exportReportToHtmlFile()` 和 `JasperExportManager.exportReportToXlsFile()` 分别用于导出报表为PDF、HTML和Excel格式。...
在这个“maven-web项目”中,我们将会深入探讨如何利用Struts2框架,结合Maven构建工具,以及Struts2的注解和JSON支持来开发Web应用。 首先,Maven是一个项目管理和综合工具,它简化了Java项目的构建、依赖管理和...
Struts2是一个基于MVC(Model-View-Controller)架构的开源框架,用于构建高效、可扩展且易于维护的企业级Web应用程序。JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,它允许在服务器和客户端...
而`struts2-json-plugin-2.1.8.jar`则是Struts2的JSON插件,它提供了对JSON的支持,允许我们在Struts2应用中轻松地生成和消费JSON数据。 1. **配置JSON支持**:要在Struts2中启用JSON响应,首先需要在`struts.xml`...
Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则是一个强大的报表生成库,可以生成多种格式的报表,如PDF、HTML、Excel等。iReport是JasperReport的可视化设计...
POI 框架是 Apache 开源的可以导出导入 Excel 表的,本博客介绍在 SSM(Spring+SpringMVC+Mybatis)项目里,如何使用 POI 框架,导出 Excel 表。下面是相关知识点的详细解释: 1. POI 框架简介 POI 框架是一个...