`
shibin_1109
  • 浏览: 79449 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java实现excel导出

    博客分类:
  • java
阅读更多

导出Excel表格

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileOutputStream;
import java.io.FileInputStream;

public class CreateXL 
{
 public static String xlsFile="test.xls"; //产生的Excel文件的名称
 public static void main(String args[])
 {
  try
  {
   HSSFWorkbook workbook = new HSSFWorkbook(); //产生工作簿对象
   HSSFSheet sheet = workbook.createSheet(); //产生工作表对象
   //设置第一个工作表的名称为firstSheet
   //为了工作表能支持中文,设置字符编码为UTF_16
   workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);
   //产生一行
   HSSFRow row = sheet.createRow((short)0);
   //产生第一个单元格
   HSSFCell cell = row.createCell((short) 0);
   //设置单元格内容为字符串型
   cell.setCellType(HSSFCell.CELL_TYPE_STRING);
   //为了能在单元格中写入中文,设置字符编码为UTF_16。
   cell.setEncoding(HSSFCell.ENCODING_UTF_16);
   //往第一个单元格中写入信息
   cell.setCellValue("测试成功");
   FileOutputStream fOut = new FileOutputStream(xlsFile);
   workbook.write(fOut);
   fOut.flush();
   fOut.close();
   System.out.println("文件生成...");
   //以下语句读取生成的Excel文件内容
   FileInputStream fIn=new FileInputStream(xlsFile);
   HSSFWorkbook readWorkBook= new HSSFWorkbook(fIn);
   HSSFSheet readSheet= readWorkBook.getSheet("firstSheet");
   HSSFRow readRow =readSheet.getRow(0);
   HSSFCell readCell = readRow.getCell((short)0);
   System.out.println("第一个单元是:" + readCell.getStringCellValue()); 
  }
  catch(Exception e) 
  {
   System.out.println(e);
  }
 }
}

  与数据库结合使用 

  使用POI,结合JDBC编程技术,我们就可以方便地将数据库中的数据导出生成Excel报表。其关键代码如下:
/*把数据集rs中的数据导出至Excel工作表中。
*传入参数:数据集rs,Excel文件名称xlsName,工作表名称sheetName。
*/

public static void resultSetToExcel(ResultSet rs,String xlsName,String sheetName) throws Exception
{
 HSSFWorkbook workbook = new HSSFWorkbook();
 HSSFSheet sheet = workbook.createSheet();
 workbook.setSheetName(0,sheetName,HSSFWorkbook.ENCODING_UTF_16);
 HSSFRow row= sheet.createRow((short)0);;
 HSSFCell cell;
 ResultSetMetaData md=rs.getMetaData();
 int nColumn=md.getColumnCount();
 //写入各个字段的名称
 for(int i=1;i<=nColumn;i++)
 { 
  cell = row.createCell((short)(i-1));
  cell.setCellType(HSSFCell.CELL_TYPE_STRING);
  cell.setEncoding(HSSFCell.ENCODING_UTF_16);
  cell.setCellValue(md.getColumnLabel(i));
 }

 int iRow=1;
 //写入各条记录,每条记录对应Excel中的一行
 while(rs.next())
 {row= sheet.createRow((short)iRow);;
  for(int j=1;j<=nColumn;j++)
  { 
   cell = row.createCell((short)(j-1));
   cell.setCellType(HSSFCell.CELL_TYPE_STRING);
   cell.setEncoding(HSSFCell.ENCODING_UTF_16);
   cell.setCellValue(rs.getObject(j).toString());
  }
  iRow++;
 }
 FileOutputStream fOut = new FileOutputStream(xlsName);
 workbook.write(fOut);
 fOut.flush();
 fOut.close();
 JOptionPane.showMessageDialog(null,"导出数据成功!");
}

  POI功能强大,还可以设置单元格格式、设置页眉页脚等.


导出Excel表格

package zjx;

import java.io.FileOutputStream;   
 import java.io.OutputStream;   
 import java.text.SimpleDateFormat;   
 import java.util.ArrayList;   
 import java.util.Date;   
 import java.util.List;   

import dao.ProductDao;
import dao.impl.ProductDaoImpl;
import entity.Product;
   
 import jxl.*;   
 import jxl.format.Alignment;   
 import jxl.format.Border;   
 import jxl.format.BorderLineStyle;   
 import jxl.format.CellFormat;   
 import jxl.write.Boolean;   
 import jxl.write.Label;   
 import jxl.write.Number;   
 import jxl.write.WritableCellFormat;   
 import jxl.write.WritableFont;   
 import jxl.write.WritableSheet;   
import jxl.write.WritableWorkbook;   
    public class DemoXls {   
   
    /** 
      * 数据库导出至Excel表格 
    */ 
     public static void main(String[] args) {   
        // 准备设置excel工作表的标题   
        String[] title = {"编号","产品名称","产品类型","计量类型"};   
        try {   
             // 获得开始时间   
             long start = System.currentTimeMillis();   
            // 输出的excel的路径   
             String filePath = "e:\\testJXL2.xls";   
             // 创建Excel工作薄   
             WritableWorkbook wwb;   
            // 新建立一个jxl文件,即在e盘下生成testJXL.xls   
             OutputStream os = new FileOutputStream(filePath);   
             wwb=Workbook.createWorkbook(os);    
           // 添加第一个工作表并设置第一个Sheet的名字   
           WritableSheet sheet = wwb.createSheet("产品清单", 0);   
             Label label;   
             for(int i=0;i<title.length;i++){   
                 // Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z   
               // 在Label对象的子对象中指明单元格的位置和内容   
                label = new Label(i,0,title[i]);   
                // 将定义好的单元格添加到工作表中   
               sheet.addCell(label);   
            }   
            // 下面是填充数据   
             /*   
              * 保存数字到单元格,需要使用jxl.write.Number 
              * 必须使用其完整路径,否则会出现错误 
              * */ 
             
             ProductDao dao=new ProductDaoImpl();
             List<Product> list=dao.queryAll();
             for(int i=0;i<list.size();i++){
                 sheet.setRowView(i,400); 
            	// 填充产品编号   
                 jxl.write.Number number = new jxl.write.Number(0,i+1,list.get(i).getProductId());   
                 sheet.addCell(number);   
                 // 填充产品名称   
                 label = new Label(1,i+1,list.get(i).getProductName());   
                 sheet.addCell(label);   
                 jxl.write.Number type = new jxl.write.Number(2,i+1,list.get(i).getProductTypeId());   
                 sheet.addCell(type); 
                 jxl.write.Number measure = new jxl.write.Number(3,i+1,list.get(i).getMeasureTypeId());   
                 sheet.addCell(measure); 
                Label label2 = new Label(1,i+1,list.get(i).getSource());   
                 sheet.addCell(label2);   
             }  
                
            // 写入数据   
            wwb.write();   
             // 关闭文件   
            wwb.close();   
             long end = System.currentTimeMillis();   
            System.out.println("----完成该操作共用的时间是:"+(end-start)/1000);   
         } catch (Exception e) {   
             System.out.println("---出现异常---");   
             e.printStackTrace();   
         }   
     }   
  
} 


下载excel表格
public String exportReport(){		
		accounts = (SysAccounts) getRequest().getSession().getAttribute(
		"SYSaccount");
	if (!"".equals(accounts) &&   null!= accounts ) {
	String fp = "/report/posquery/";
	Long file = (new Date()).getTime();
	System.out.print("开始报表下载");
	Map map=null;
	listmap=new ArrayList<Map>();
	List datelist=Dateutil.datelist(ymouse);//得到日期
	String hql="from "+Orgbank.class.getName()+" where bankno='"+bankno+"'";
	List lists=bankbfjreportService.find(hql);
	if(lists!=null&&lists.size()>0){
		bankacct=(Orgbank) lists.get(0);
	}
	System.out.print(sql);
	list=bankbfjreportService.getListFromSQL(sql);
	Double bbputamt=0.0;
	Double bbputfeeamt=0.0;
	Double qbputamt=0.0;
	Double qbputfeeamt=0.0;
	Double bysputamt=0.0;
	Double bysputfeeamt=0.0;
	Integer trandate1=0;
	for(int i=1;i<=datelist.size();i++){
		map=new HashMap();
		map.put("date", i);
		if(list!=null&&list.size()>0){
			Object[] obj=null;
			int kk=0;
		for(int j=0;j<list.size();j++){
		
			if(null!=obj[0]){
				String date=obj[0].toString();
				date=date.substring(7, 8);
				trandate1=Integer.valueOf(date);
			}
			if(null!=obj[1]){
				bbputamt=Double.valueOf(obj[1].toString());				
							}
			if(null!=obj[2]){
				bbputfeeamt=Double.valueOf(obj[2].toString());
			}
			if(null!=obj[3]){
				qbputamt=Double.valueOf(obj[3].toString());
				
			}
			if(null!=obj[4]){
				qbputfeeamt=Double.valueOf(obj[4].toString());
			}
			if(null!=obj[5]){
				bysputamt=Double.valueOf(obj[5].toString());
			}
			if(null!=obj[6]){
				bysputfeeamt=Double.valueOf(obj[6].toString());
			}
			if(i==trandate1){
				kk+=1;
				map.put("A01", bbputamt);
		    	map.put("A02", bbputfeeamt);
		    	map.put("A03", qbputamt);
		    	map.put("A04", qbputfeeamt);
		    	map.put("A05", bysputamt);
		    	map.put("A06", bysputfeeamt);
		    	map.put("A07", 0);
		    	map.put("A08", 0);
		    	map.put("A09", 0);
		    	map.put("A10", 0);
		    	map.put("A11", 0);
		    	map.put("A12", 0);
		    	map.put("A13", 0);
		    	map.put("A14", 0);
			}
		}
		if(kk!=1){
	    	
	    	map.put("A01", 0);
	    	map.put("A02", 0);
	    	map.put("A03", 0);
	    	map.put("A04", 0);
	    	map.put("A05", 0);
	    	map.put("A06", 0);
	    	map.put("A07", 0);
	    	map.put("A08", 0);
	    	map.put("A09", 0);
	    	map.put("A10", 0);
	    	map.put("A11", 0);
	    	map.put("A12", 0);
	    	map.put("A13", 0);
	    	map.put("A14", 0);
	    	listmap.add(map);
	    }
		}else{
			map.put("A01", 0);
	    	map.put("A02", 0);
	    	map.put("A03", 0);
	    	map.put("A04", 0);
	    	map.put("A05", 0);
	    	map.put("A06", 0);
	    	map.put("A07", 0);
	    	map.put("A08", 0);
	    	map.put("A09", 0);
	    	map.put("A10", 0);
	    	map.put("A11", 0);
	    	map.put("A12", 0);
	    	map.put("A13", 0);
	    	map.put("A14", 0);
	    	System.out.println(map.get("date")+"---------------");
	    	listmap.add(map);
	    	
		}
	}
	if (listmap.size() > 65000) {
		setMessage("<script>alert('所选择日期范围内记录数大于65000条,不允许下载!');location.href='pro.do';</script>");
		return ERROR;
	}
	ZfrjdetailAction ce = new ZfrjdetailAction();
	
	ce.createExcel(bankbfjreportService,ymouse,bankno,getRequest(), listmap, fp, file.toString()
			+ ".xls");
	String path = fp + file.toString() + ".xls";
	try {
		HttpServletResponse response = this.getResponse();
		response.setCharacterEncoding("UTF-8");
		PrintWriter o = response.getWriter();
		StringBuffer ou = new StringBuffer();

		// ou.append("<script>alert('asdf');location.href='/giftweb/Downlaod'</script>");
		ou.append("<script>top.location.href='/giftweb/Downlaod?file="
				+ path + "';history.go(-1);</script>");

		// ou.append("<script>location.href='/Downlaod?file=/report/posquery/1392729094571.xls';hisory.go(-1);</script>");
		System.err.println(ou.toString());
		o.write(ou.toString());
		o.flush();
		o.close();

	} catch (Exception e) {
		e.printStackTrace();
	}
	} else {
	setMessage("<script>alert(\"登陆超时,请重新登陆!\");top.location.href='/giftweb/admin/logining.html';</script>");
	return ERROR;
	}
	return ERROR;
	}

设置样式链接:http://zhouhaitao.iteye.com/blog/1842769
分享到:
评论

相关推荐

    java实现Excel导出

    总结,Java实现Excel导出主要涉及Apache POI库的使用,通过创建工作簿、工作表、行和单元格,设置值和样式,最终将内容写入文件。在处理大数据量时,可以利用SXSSF进行优化。如果有`lyl-utils`这样的工具类,可以...

    java实现excel导出所需要的jar

    "java实现excel导出所需要的jar"指的是那些支持Java与Excel交互的第三方库的JAR文件。以下是一些常用的库及其功能: 1. Apache POI:Apache POI 是一个流行的开源项目,它提供了读写Microsoft Office格式文件的能力...

    java实现excel导出功能

    java实现excel导出功能,通过查询数据库指定数据,将数据以excel方式导出的功能 excel导出的功能

    Java实现Excel导入导出

    Excel源代码,导入导出各种工具类 &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-scratchpad 代码实例: String path = ""; byte[] bytes; vo.setCurrentPage(0); vo....

    java导出复杂Excel内容数据动态循环

    java导出复杂Excel内容数据动态循环

    java_poi实现excel导入导出

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

    Java的Excel导出功能

    在Java编程环境中,实现Excel导出功能是一项常见的需求,尤其在数据处理和报表生成场景下。Excel导出功能使得程序能够将数据结构化地存储到Excel文件中,方便用户查看、编辑和分析。这里我们将深入探讨Java实现Excel...

    java实现excel导出导入

    以上就是使用Java和Apache POI实现Excel导出和导入的基本流程。在实际项目中,你可能需要处理更复杂的情况,如多Sheet操作、日期格式转换、自定义样式等。Apache POI提供了丰富的API,足以应对这些需求。记住,始终...

    java poi 实现excel的导入与导出

    本教程将深入讲解如何使用Java POI实现Excel的导入与导出功能,并结合Java反射技术,构建一个适用于大型项目二次开发的通用框架。 首先,让我们理解Java POI的基本用法。要读取Excel文件,你需要创建一个`...

    最新java实现Excel导入导出

    用Java实现的Excel的导入导出,简洁明了,高质量代码。

    java实现excel导入导出.pdf

    Java 实现 Excel 导入导出 Java 是一种流行的编程语言,Excel 是一种常用的电子表格软件。在 Java 中,实现 Excel 导入导出可以使用多种方式,本文将介绍使用 JXL 和 POI 两个库实现 Excel 导入导出的方法。 使用 ...

    java实现Excel导入导出

    Java 实现 Excel 导入导出是指使用 Java 语言编写程序来实现将 Excel 文件中的数据导入到 Java 程序中,并将 Java 程序中的数据导出到 Excel 文件中。这种操作可以使用 Apache POI 库来实现。 POI 库简介 Apache ...

    java Excel导出导入

    java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入java Excel 导出 导入

    java复杂模板excel导出例子

    在Java编程中,导出复杂的Excel模板是一...熟练掌握Apache POI或其他相关库的用法,结合业务需求,能有效提高工作效率并提供高质量的Excel导出功能。在实际开发中,不断优化代码和策略,可以更好地满足性能和功能需求。

    JAVA实现excel的导出.zip

    用Java语言采用接口设计模式、代理设计模式、工厂设计模式实现对excel中的表实现基本的导出(写)功能,把一个对象集合输出到一个excel表中。 【基本功能】 将对象集合导出到Excel表 【扩展功能】 1、自由设置表头 2...

    JAVA poi 做EXCEL导出(包含图片) 完整版

    本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel导出功能。 首先,你需要在项目中引入Apache POI依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache....

    Java POI EXCEL导入导出

    Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出

    Java实现Excel导入导出功能

    在Java编程领域,实现Excel的导入导出功能是一项常见的任务,尤其在数据分析、报表生成以及数据交换等场景中。本文将深入探讨如何使用Java来处理Excel文件,包括读取、写入以及转换Excel数据。 首先,Java实现Excel...

    java实现导出excel功能

    java实现导出excel功能,可稍作修改移值到网页上进行数据导出

Global site tag (gtag.js) - Google Analytics