`

poi导出模版复制

 
阅读更多

由于工作需要,excel每次个工作表格式一样,每次手工填写太麻烦,于是想到了服务器自己来做这个工作。

 

 

protected HSSFWorkbook wb = null;
	protected HSSFSheet sheet;
	protected HSSFRow row = null;   
	protected HSSFCell cell = null; 
	public void export(String url,BailChargeDTO list,String sDate,String eDate, OutputStream output) throws Exception {
	
POIFSFileSystem fs = null;
		try {
			fs = new POIFSFileSystem(new FileInputStream(url));
			wb = new HSSFWorkbook(fs);
			
			int sdate = Integer.parseInt(sDate);
			int edate = Integer.parseInt(eDate);
			
			for(int date = sdate ; date <= edate ; ++date){
		
				HSSFSheet fromsheet = wb.getSheet("template");
				if (fromsheet != null && wb.getSheet(String.valueOf(date)) == null) {
					HSSFSheet newsheet = wb.createSheet(String.valueOf(date));
					new PoiExcelSheetCopy().copyRows(wb, fromsheet, newsheet, fromsheet.getFirstRowNum(), fromsheet.getLastRowNum());
				}
				
				sheet = wb.getSheet(String.valueOf(date));//获取工作表名字
				row = sheet.createRow(1);
				Cell ztCell = row.createCell(0);
				ztCell.setCellValue(" 日期:" + date);
				
				// 创建单元格样式对象  
				HSSFCellStyle cellstyle = wb.createCellStyle();
				HSSFCellStyle textstyle = wb.createCellStyle();
				HSSFCellStyle sumstyle = wb.createCellStyle();
	            
				// 创建字体对象  
				Font dateFont = wb.createFont();  
				dateFont.setFontHeightInPoints((short)18);    // 将字体大小设置为18px  
				dateFont.setFontName("宋体");             // 将“华文行楷”字体应用到当前单元格上  
				dateFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
	            cellstyle.setFont(dateFont);                    // 将字体应用到样式上面  
	            cellstyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
	            ztCell.setCellStyle(cellstyle); 
//	            
	            Font textFont = wb.createFont();  
	            textFont.setFontHeightInPoints((short)18);    // 将字体大小设置为18px  
	            textFont.setFontName("宋体");             // 将“华文行楷”字体应用到当前单元格上  
				textstyle.setFont(textFont);                    // 将字体应用到样式上面  
				textstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
				
				Font suFont = wb.createFont();  
				suFont.setFontHeightInPoints((short)18);    // 将字体大小设置为18px  
				suFont.setFontName("宋体");             // 将“华文行楷”字体应用到当前单元格上  
				suFont.setColor(HSSFColor.RED.index);
				sumstyle.setFont(suFont);                    // 将字体应用到样式上面  
				sumstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
				
				//
				int rownum = 4;
				List<AgentAccountDetailDTO> dtoList = new BailChargeQueryExport().sortMap(list.getAgentAccount(),date).get(String.valueOf(date));
				int len = dtoList.size();
				for (int j = 0; j < len; j++) {
					AgentAccountDetailDTO dto = dtoList.get(j);
	
					row = sheet.createRow(rownum);
					row.setHeightInPoints(20);
					Cell c = row.createCell(0);
					Cell d = row.createCell(1);
					Cell e = row.createCell(2);
					Cell f = row.createCell(3);
					Cell h = row.createCell(4);
					Cell i = row.createCell(5);
					Cell k = row.createCell(6);
					Cell g = row.createCell(7);
					
					c.setCellValue(new HSSFRichTextString(String.valueOf(dto.getAgentName())));
					d.setCellValue(dto.getAgentId());
					e.setCellValue(dto.getAgentLink());
					f.setCellValue(Double.parseDouble(dto.getRfee().toString()));
	//				row.createCell(2).setCellValue(new HSSFRichTextString(dto.getRuser()));
	//				row.createCell(4).setCellValue(dto.getRdate());
					g.setCellValue(dto.getTransDesc());
					
					c.setCellStyle(textstyle);
					d.setCellStyle(textstyle);
					e.setCellStyle(textstyle);
					f.setCellStyle(textstyle);
					g.setCellStyle(textstyle);
					h.setCellStyle(textstyle);
					i.setCellStyle(textstyle);
					k.setCellStyle(textstyle);
					//
					rownum++;
				}
				row = sheet.createRow(rownum);
				sheet.setForceFormulaRecalculation(true);
				row.setHeightInPoints(20);
				Cell c = row.createCell(0);
				c.setCellValue("总数");
				c.setCellStyle(sumstyle);
				Cell sum = row.createCell(3);
				sum.setCellType(HSSFCell.CELL_TYPE_FORMULA);//设置为公式
				
				// 设置公式内容
				String formula = "SUM(D5:D"+ rownum +")";//计算一列总数
				if(HSSFCell.CELL_TYPE_FORMULA == sum.getCellType()){
					sum.setCellFormula(formula);
					
				}
				sum.setCellStyle(sumstyle);
				
			}
			wb.setActiveSheet(1);//激活滴2个工作表,保存打开
			wb.write(output);
			
		} catch (IOException e) {
			throw new Exception("服务器报表文件位置异常,请报告管理员!谢谢!");
		} 


}
	//对数据筛选
	public Map<String ,List<AgentAccountDetailDTO>> sortMap(List<AgentAccountDetailDTO> list, int sdate){
		Map<String ,List<AgentAccountDetailDTO>> map = new HashMap<String ,List<AgentAccountDetailDTO>>(); 
		List<AgentAccountDetailDTO> dtoList = new ArrayList<AgentAccountDetailDTO>();  //重新声明一个数组list
		 for(Iterator<AgentAccountDetailDTO> it = list.iterator();it.hasNext();){
			 AgentAccountDetailDTO dto = (AgentAccountDetailDTO)it.next();
	            if(Integer.parseInt(dto.getRdate()) == (sdate)){ //如果已经存在这个数组,就放在这里 
	            	dtoList.add(dto);
	            }
	        }
		 map.put(String.valueOf(sdate), dtoList);
 
		return map;
	}
WPS 打开不能自动求和,ms excel 打开后可以自动求和。
  • 大小: 12.6 KB
分享到:
评论

相关推荐

    poi excel 模板读取并导出带公式的excel文档

    ### POI Excel 模板读取并导出带公式的Excel文档 #### 一、概述 在实际工作中,经常需要批量处理数据,并将其导出到Excel文件中,特别是在需要复杂计算的情况下,例如工资单、统计数据汇总等场景。利用Apache POI...

    POI使用Excel模板文件循环输出行并导出Excel

    在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...

    Java操作Excel之Poi模板导入导出

    在"Java操作Excel之Poi模板导入导出"这个主题中,我们将深入探讨如何使用POI库来处理Excel模板,并进行数据的导入和导出。 首先,了解Excel模板的基本概念。模板通常包含预定义的样式、格式和计算,开发人员可以...

    基于poi导出word以及图片

    在本教程中,我们将重点讨论如何利用Apache POI 3.13版本来导出Word文档,并结合图片操作。 首先,Apache POI提供了一个叫做HWPF(Horrible Word Processor Format)的API来处理老版的Word(.doc)文件,而XWPF...

    java基于poi通过excel模板导出

    本篇文章将详细探讨如何利用POI库基于模板来导出Excel文档。 首先,我们需要理解Apache POI的工作原理。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)两个组件,分别用于处理老...

    poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行

    标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...

    POI模版导出excel

    在描述中提到的博客链接(已提供但无法直接访问)可能详细介绍了使用POI进行模板导出Excel的具体步骤和示例代码。虽然我们无法直接查看博客内容,但根据通常的实践,我们可以推测以下关键点: 1. **创建模板**:首先...

    Java POI根据模板生成Excel(xlsx)文件

    3. **处理样式和格式**:如果模板中包含特定的样式或格式,可以使用`CellStyle`和`Font`对象来复制或修改。例如: ```java CellStyle style = cell.getCellStyle(); style.setFont(style.getFont().deriveFont...

    使用poi根据导入模板生成excel

    总的来说,使用Apache POI库,我们可以灵活地根据Excel模板生成新的数据表,这在数据报告、批量导入导出等场景中非常实用。通过深入理解POI的API和Excel文件结构,我们可以实现更复杂的功能,满足各种业务需求。在...

    java实现poi模板生成PPT文件代码

    在这个项目中,我们将会探讨如何使用POI API来生成PPT文件,特别是通过模板的方式。以下是详细的步骤和知识点。 1. **Apache POI介绍**: Apache POI 是一个开源项目,它提供了Java API来处理Microsoft Office格式...

    POI操作PPT文档(导入,导出,读取,添加,拼接,替换文本,页面排序)

    POI 操作 PPT 文档(导入、导出、读取、添加、拼接、替换文本、页面排序) POI(Apache POI)是一款开源的Java库,用于读取和写入各种Microsoft Office文件格式,包括PPT文档。本文档将介绍如何使用POI操作PPT文档...

    poi基于Excel模板导入导出实例(注释详细,绝对可以用)

    本实例将深入探讨如何利用Apache POI库基于Excel模板进行数据的导入和导出。 1. **创建Excel模板** 在此实例中,你需要有一个预先设计好的Excel模板。这个模板可能包含固定格式的表格、样式、公式等,作为数据导入...

    java根据word模板导出Word文件,插入图片表格都可以

    网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n实现换行。这些都不符合我的需求, 因为我要的是分段,而不是换行。换行的word导致另一...

    Java根据模板导出Excel报表并复制模板生成多个Sheet页

    Java根据模板导出Excel报表并复制模板生成多个Sheet页 本文主要介绍了Java根据模板导出Excel报表并复制模板生成多个Sheet页的方法,具有很好的参考价值。本工具类使用的场景为根据提供的模板来导出Excel报表并且可...

    基于spring的以excel模板的导入导出

    对于导出,你可以创建一个新的Workbook对象,复制模板工作表,填充数据,最后保存为新的Excel文件。对于导入,你需要读取上传的Excel文件,解析每一行的数据,验证其格式和内容,然后将有效数据存入数据库。 4. **...

    poi导出excel

    ### POI 导出 Excel 的实现原理与代码详解 #### 一、概述 Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java API,包括 Word、Excel 和 PowerPoint 文件等。本文主要介绍如何利用 POI 实现 Excel 文件...

    使用模板导出excel数据.zip

    4. **模板操作**:在程序中,我们可以先加载模板文件,然后在已存在的工作表中填充数据,或者创建新的工作表并复制模板样式。这涉及到Sheet、Row和Cell对象的操作,以及HSSFCell或XSSFCell接口的使用。 5. **数据...

    报表技术POI导入导出复杂样式Excel和百万数据(Java代码).zip

    在具体实现时,可以创建一个模板Excel文件,预设好复杂的样式,然后通过POI读取模板并复制样式,再根据需要填充数据。这样既可以保持样式的一致性,又能高效地处理数据。 总之,Apache POI为Java开发者提供了强大的...

    springmvc+POI的Excel文件导入导出

    总结起来,"SpringMvc+POI的Excel文件导入导出"涉及到的关键技术包括Spring MVC的文件上传处理、Apache POI的Excel读写操作、以及模板填充和导出。通过熟练掌握这些技术,开发者能够高效地处理企业级应用中的Excel...

    文件导入和导出

    // 复制模板到新工作簿 Sheet templateSheet = templateWorkbook.getSheetAt(0); Sheet dataSheet = dataWorkbook.cloneSheet(0); // 替换占位符 for (Row row : dataSheet) { for (Cell cell : row) { if ...

Global site tag (gtag.js) - Google Analytics