`
tracy婷婷
  • 浏览: 24286 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

poi写入excel2007

    博客分类:
  • Java
阅读更多

从数据库中读取数据并导出excel文件(要求excel2007版本)

xssfworkbook用于excel2007版本

 

 

service.java

	public Object invoke(Object inData) throws TonicareException {
		// TODO Auto-generated method stub
		WarehouseWasteRecordListVo vo=(WarehouseWasteRecordListVo) inData;
		
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String path = "";
	
		if(StringUtils.isNotEmpty(vo.getOpType())){
			if(Const.OPERATE_VIEW.equals(vo.getOpType())){
				
				String opid[]=vo.getOpId().split(",");
				vo.setOpId(opid[0]);//传值过来的id可能会将id重复 变成“31,31”这种形式
				DeliverDao dao=(DeliverDao) BeanFactory.getDao(Const.DAO_MGMT_DELIVER);
				WhWareHouse house=dao.getWarehouseById(Integer.parseInt(vo.getOpId()));
				
				String name =house.getName()+"—仓库废品处理记录"+System.currentTimeMillis();
				vo.setFileName(name);

 				path = this.WriteExcel(vo,conn,ps,rs);
				if (StringUtils.isNotEmpty(path))
					vo.setCsv(path);
			}				
		}
		return null;
	}
	

 

 

 

	public String WriteExcel(WarehouseWasteRecordListVo vo,Connection conn ,PreparedStatement ps,ResultSet rs ){
		String result=StringUtils.EMPTY;
		Date tmp=null;
		try {
			conn=DbHelper.getConnection();
			if(id>0){
				String strSql = "select  a.*,b.name,b.PRICE_QUOTE,b.BASE_ID,b.BASE_AMOUNT,b.TYPE_ID  from wh_order_waste a ,wh_product b  where 1=1  and a.PRODUCT_ID=b.CODE and a.WAREHOUSE_ID="+id;
				
				ps=conn.prepareStatement(strSql);
				rs=ps.executeQuery();
				while(rs.next()){
					WarehouseWasteRecordEditVo row=new WarehouseWasteRecordEditVo();
					row.setId(rs.getInt("id"));
					row.setWarehouseId(rs.getInt("warehouse_id"));
					row.setName(rs.getString("name"));
					row.setProductId(rs.getLong("product_id"));
					row.setAmount(rs.getInt("amount"));
					row.setFlag(rs.getInt("flag"));
					
					Integer typeid=rs.getInt("TYPE_ID");
					if(typeid!=null && typeid!=0){
						StProductTypeDao daotype= (StProductTypeDao) BeanFactory.getDao(Const.DAO_SELL_STPRODUCTTYPE);
						StProductType productType=daotype.getProductTypeById(typeid);
						row.setTypeName(productType.getName());
					}else{
						row.setTypeName("");
					}
					
					Long baseid=rs.getLong("BASE_ID");
					if(baseid!=null && baseid!=0){
						DeliverDao dao=(DeliverDao) BeanFactory.getDao(Const.DAO_MGMT_DELIVER);
						WhProduct pro=dao.getProductByCode(baseid).get(0);
						row.setSumPrice(row.getAmount()*pro.getPriceQuote());
					}else{
						row.setSumPrice(0.0);
					}
					
					tmp = new Date(rs.getTimestamp("UPDATE_TIME").getTime());
					row.setUpdateTime(tmp);
					vo.getDatas().add(row);
				}
			}
			
			result=Config.APP_PATH+File.separator+"report"+File.separator+vo.getFileName()+".xlsx";
			FileOutputStream fos=new FileOutputStream(result);
			XSSFWorkbook xfwb=new XSSFWorkbook();// 创建工作薄
			
			XSSFSheet sheet=xfwb.createSheet("sheet1");// 在工作薄中创建一工作表
			XSSFRow row=sheet.createRow(0);// 在指定的索引处创建一行
			row.createCell(0).setCellValue(vo.getFileName());
			
			XSSFRow row1=sheet.createRow(1);
			row1.createCell(0).setCellValue("序号");
			row1.createCell(1).setCellValue("产品条码");
			row1.createCell(2).setCellValue("产品名称");
			row1.createCell(3).setCellValue("分类");
			row1.createCell(4).setCellValue("废品处理数量(瓶)");
			row1.createCell(5).setCellValue("金额");
			row1.createCell(6).setCellValue("责任方");
			row1.createCell(7).setCellValue("时间");
			
			if(vo.getDatas()!=null && vo.getDatas().size()>0){
				for(int i = 0; i < vo.getDatas().size(); i++){
					WarehouseWasteRecordEditVo  bean=vo.getDatas().get(i);
					XSSFRow dataRow=sheet.createRow(i+2);
					
					dataRow.createCell(0).setCellValue((i+1));
					dataRow.createCell(1).setCellValue(String.valueOf(bean.getProductId()));//将产品id强制转换成字符串类型,避免excel报表出现不科学计算
					dataRow.createCell(2).setCellValue(bean.getName());
					dataRow.createCell(3).setCellValue(bean.getTypeName());
					dataRow.createCell(4).setCellValue(bean.getAmount());
					dataRow.createCell(5).setCellValue(bean.getSumPrice());
					
					String responsible=null;
					if(bean.getFlag()!=null){
						//1:公司废弃;2:供应商;3:物流赔付;
						if(bean.getFlag()==1){
							responsible="公司废弃";
						}else if(bean.getFlag()==2){
							responsible="供应商";
						}else if(bean.getFlag()==3){
							responsible="物流赔付";
						}
					}
					dataRow.createCell(6).setCellValue(responsible);
					
					SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
					dataRow.createCell(7).setCellValue(sdf.format(bean.getUpdateTime()));
                                         //从数据库查询得到的时间已经转换为data形式  excel报表需要“yyyy-MM-dd hh:mm:ss”形式的数据 
				}
			}
			xfwb.write(fos);
			fos.flush();
			fos.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			LogHelper.error(e);
		}finally{
			DbHelper.closedAll(rs, ps, conn);
		}
		
		return result;
	}

 

 action.java

 

		if (StringUtils.isNotEmpty(vo.getCsv())) {
			try {
				HttpServletResponse response = ServletActionContext.getResponse();
				response.setContentType("application/force-download");
				response.setCharacterEncoding(Const.DEFAULT_CHARSET);
				response.setHeader("Content-Disposition", "attachment;filename=" +java.net.URLEncoder.encode(vo.getFileName(), "UTF-8") + ".xlsx");
				
				OutputStream os = null;
				FileInputStream fis = null;
				
				os = response.getOutputStream();
				fis = new FileInputStream(vo.getCsv());
				byte[] b = new byte[1024];
				int i = 0;
				while((i=fis.read(b)) > 0)
					os.write(b, 0, i);
				os.flush();
				os.close();
				fis.close();
				fis = null;
			}
			catch (Exception e) {
				LogHelper.info("");
			}
			return null;
		}

 

 

页面代码

 

<div>
		<ul class="toolBar">
			<li><a class="icon" href="deliver/warehouseWasteRecordList.do?opId=${opId}&opType=VIEW"  target="dwzExport"  targetType="navTab" id="exportProduct" postType="string" title="确定要导出这些记录吗?" ><span>导出废品处理记录</span></a></li>
		</ul>
	</div>

 

 

分享到:
评论

相关推荐

    POI 生成EXCEL2007【含例子】

    标题 "POI 生成EXCEL2007【含例子】" 涉及到的知识点主要集中在Apache POI库的使用上,这是一个强大的Java API,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件。在这个场景中,重点是创建和操作...

    利用POI读取excel写入到word

    本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,我们需要了解Apache POI的基本概念。POI提供了一组API,允许程序员在Java应用程序中创建、修改和显示这些文件。对于Excel...

    Poi 写入EXCEL

    Poi 写入EXCEL 插入一行Poi 写入EXCEL 插入一行

    使用POI解析excel文件并写入数据库

    使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...

    poi读写excel+poi总结

    以下是一个简单的Java示例,演示如何使用POI写入Excel: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; public class ...

    使用POI将数据写入到EXCEL

    以上就是使用Apache POI将数据写入Excel的基本步骤。在实际应用中,你可能还需要处理更多细节,比如设置单元格样式、合并单元格、添加公式等。此外,如果数据量较大,为了性能考虑,可以使用SXSSFWorkbook,它提供了...

    POI实战-java开发excel.rar_Excel写入_JAVA 处理excel_POI_java 写入excel

    POI处理excel文件,主要包括Excel的读取、写入,各种数据格式处理、单元格合并、注释、下拉列表及单元格的边框、背景色、宽度调整等。

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    poi读取Excel2007文件

    标题中的“poi读取Excel2007文件”指的是使用Apache POI库来读取Microsoft Excel 2007及更高版本(XLSX格式)的文件。Apache POI是Java平台上的一个开源项目,它提供了API来处理Microsoft Office格式的文件,包括...

    poi excel poi excel poi excel

    通过上述介绍,我们可以看到 Apache POI 提供了非常强大的功能来处理 Excel 文件,无论是读取还是写入都非常方便。掌握 POI 的基本用法对于开发人员来说是非常有用的技能,特别是在需要处理大量数据时更是如此。希望...

    使用POI操作Excel文件(写)

    Apache POI提供了HSSFWorkbook类用于处理Excel 2003及之前的.xls文件,而XSSFWorkbook类用于处理Excel 2007及之后的.xlsx文件。这里我们主要讨论.xlsx格式,因为它是更现代且广泛支持的格式。 要创建一个新的Excel...

    POI向excel中插入图片

    POI提供了HSSFPicture类和XSSFPicture类(分别对应于.HSSF和.XSSF,即Excel 2003和2007以上的版本)来处理这些图片。 **1. 引入依赖** 在Java项目中,你需要在pom.xml文件中添加Apache POI的相关依赖,例如: ```...

    POI解析excel2007和生成excel2007.docx

    POI(Poor Obfuscation Implementation)是一款Java库,用于读取和写入各种格式的文件,包括Excel、Word、PowerPoint等。下面我们将详细介绍如何使用POI来解析Excel 2007和生成Excel 2007。 POI解析Excel 2007 在...

    poi操作excel2007

    Apache POI是一个开源项目,主要用于读取和写入Microsoft Office格式的文件,包括Excel。在Excel 2007及更高版本中,引入了新的文件格式,即.xlsx,它是基于Open XML标准的。Apache POI提供了对这种新格式的支持,让...

    POI解析Excel2007

    在描述中提到的"POI解析Excel2007",指的是使用Apache POI处理Microsoft Excel 2007(以及之后版本)创建的.xlsx文件。这种格式基于Open XML标准,与早期的.xls文件不同,它采用ZIP存档结构存储数据,因此可以包含...

    POI导出Excel文件

    Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作...

    POI解析excel2007和生成excel2007.pdf

    POI解析excel2007和生成excel2007.pdf Apache POI 是一个开源的 Java 库,用于读取和写入各种 Microsoft Office 文件格式,包括 Excel、Word、PowerPoint 等。今天,我们将讨论如何使用 Apache POI 来解析 excel...

    解决poi读取excel2007出现内存溢出问题代码参

    4. **写入Excel文件**: - 同样,创建`SXSSFSheet`,然后使用`SXSSFRow`和`SXSSFCell`来添加数据。 - 写入时,确保及时调用`flushRows()`或`flush()`方法,将内存中的行写入磁盘。 5. **优化性能**: - 如果可能...

    Jxl和poi读取写入excel

    本文将深入探讨如何使用Jxl和Apache POI库来读取和写入Excel文件,同时会区分2007年之后的.xlsx格式(基于OpenXML)和2003及之前的.xls格式(基于BIFF)。 首先,让我们了解一下Jxl库。Jxl是Java Excel API的简称,...

    Java使用apache POI读取Excel2007以上代码以及所需jar包

    本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的文件,并提供所需的jar包信息。 首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件...

Global site tag (gtag.js) - Google Analytics