`

JAVA及jsp下导出Excel表格

阅读更多

本篇文章就举例示范如何利用Java 创建和读取Excel文档,并设置单元格的字体和格式。

  为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是: http://jakarta.apache.org/poi/

第一:创建Excel 文档

  示例1将演示如何利用Jakarta POI API 创建Excel 文档。

  示例1程序如下:

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;
public class CreateXL {

 /** Excel 文件要存放的位置,假定在D盘JTest目录下*/

 public static String outputFile="D:/JTest/ gongye.xls";

 public static void main(String argv[]){

 try{

  // 创建新的Excel 工作簿

  HSSFWorkbook workbook = new HSSFWorkbook();

  // 在Excel工作簿中建一工作表,其名为缺省值
      // 如要新建一名为"效益指标"的工作表,其语句为:
      // HSSFSheet sheet = workbook.createSheet("效益指标");

  HSSFSheet sheet = workbook.createSheet();

  // 在索引0的位置创建行(最顶端的行)

  HSSFRow row = sheet.createRow((short)0);

  //在索引0的位置创建单元格(左上端)
  HSSFCell cell = row.createCell((short) 0);
  // 定义单元格为字符串类型
  cell.setCellType(HSSFCell.CELL_TYPE_STRING);
  // 在单元格中输入一些内容
  cell.setCellValue("增加值");
  // 新建一输出文件流
  FileOutputStream fOut = new FileOutputStream(outputFile);
  // 把相应的Excel 工作簿存盘
  workbook.write(fOut);
  fOut.flush();
  // 操作结束,关闭文件
  fOut.close();
  System.out.println("文件生成...");

 }catch(Exception e) {
  System.out.println("已运行 xlCreate() : " + e );
 }
}
}
第二:读取Excel文档中的数据

  示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为gongye.xls的Excel文件。

  示例2程序如下:

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.FileInputStream;
public class ReadXL {
 /** Excel文件的存放位置。注意是正斜线*/
 public static String fileToBeRead="D:/JTest/ gongye.xls";
 public static void main(String argv[]){
 try{
  // 创建对Excel工作簿文件的引用
  HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
  // 创建对工作表的引用。
  // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
  HSSFSheet sheet = workbook.getSheet("Sheet1");
  // 也可用getSheetAt(int index)按索引引用,
  // 在Excel文档中,第一张工作表的缺省索引是0,
  // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
  // 读取左上端单元
  HSSFRow row = sheet.getRow(0);
  HSSFCell cell = row.getCell((short)0);
  // 输出单元内容,cell.getStringCellValue()就是取所在单元的值
  System.out.println("左上端单元是: " + cell.getStringCellValue());
 }catch(Exception e) {
  System.out.println("已运行xlRead() : " + e );
 }
}
}
 第三: 设置单元格格式

  在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:

  1、创建字体,设置其为红色、粗体:

HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  2、创建格式

HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
  3、应用格式

HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题 ");   

 

 

第四: 小例子

 

1.最简单的实现,可以让你一下就看到效果

<%@ page contentType="application/msexcel" %>
<!-- 以上这行设定本网页为excel格式的网页 -->
<%
   response.setHeader("Content-disposition","inline; filename=test1.xls");
   //以上这行设定传送到前端浏览器时的档名为test1.xls
   //就是靠这一行,让前端浏览器以为接收到一个excel档
%>
<html>
<head>
<title>Excel档案呈现方式</title>
</head>
<body>
  <table border="1" width="100%">
    <tr>
      <td>姓名</td><td>身份证字号</td><td>生日</td>
    </tr>
    <tr>
      <td>李玟</td><td>N111111111</td><td>1900/11/12</td>
    </tr>
    <tr>
      <td>梁静如</td><td>N222222222</td><td>1923/10/1</td>
    </tr>
    <tr>
      <td>张惠妹</td><td>N333333333</td><td>1934/12/18</td>
    </tr>
  </table>
</body>
</html>

 

2.第二种,在页面可以写入数据

<%@ page import="org.apache.poi.hssf.usermodel.HSSFCell" %>
<%@ page import="org.apache.poi.hssf.usermodel.HSSFRow" %>
<%@ page import="org.apache.poi.hssf.usermodel.HSSFSheet" %>
<%@ page import="org.apache.poi.hssf.usermodel.HSSFWorkbook" %>
<%@ page import="java.util.List" %>
<%
   //这是我获取我们系统种的数据,上面的代码我删掉了,只要得到一个List就可以了
    List userList = (List) ret.getObject("users");

    String filename = "";
    filename = "activeUserList.xls";
    
    String[] tableHeader = {"userName", "registTime", "lastLoginTime"};
    response.setContentType("APPLICATION/OCTET-STREAM ");
    response.setContentType("application/x-msdownload;charset=utf-8");
    response.setCharacterEncoding("utf-8");
    response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("GBK"), "ISO8859_1"));
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet();
    wb.setSheetName(0, "userList", HSSFWorkbook.ENCODING_UTF_16);
    // 表头为第一行
    HSSFRow headerRow = sheet.createRow(0);
    for (int i = 0; i < tableHeader.length; i++) {
        HSSFCell headerCell = headerRow.createCell((short) i);
        headerCell.setEncoding(HSSFCell.ENCODING_UTF_16);
        headerCell.setCellValue(tableHeader[i]);
    }
    UserVo user;
    HSSFRow row;
    HSSFCell cell;

    if (userList != null) {
        for (int i = 0; i < userList.size(); i++) {
            user = (UserVo) userList.get(i);
            row = sheet.createRow(i + 1);
            cell = row.createCell((short) 0);
//            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellValue(user.getName());
            cell = row.createCell((short) 1);
            cell.setCellValue(user.getRegistTime().toString());
            cell = row.createCell((short) 2);
            cell.setCellValue(user.getLastLoginTime().toString());
        }
    }

    wb.write(response.getOutputStream());
    response.getOutputStream().flush();
    response.getOutputStream().close();
%>

 Java生成代码编写

1。

public ActionForward toExcelModif(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		try {

			String title = "员工号,员工姓名,金额,结束日期";

			String records = new String();
			records = "";
			String records2 = new String();
			records2 = "";
			
			int ai = 0;
						
			

			// 输出Excel
			HttpSession s = request.getSession(false);
			Employee emp = (Employee) s.getAttribute(Constants.USER_IN_SESSION);
			String str1=System.getProperty("user.dir");
			String str2=System.getProperty("file.separator");
			String strf = str1+str2+ emp.getEmpEname()
					+ "_output.xls";

			File file = new File(str1+str2);

			
			if (!file.exists()) {
				file.mkdirs();
			}
			File fileWrite = new File(strf);
			fileWrite.createNewFile();
			OutputStream os = new FileOutputStream(fileWrite);
			HashMap<String, Object> map2 = new HashMap<String, Object>();
			String reviewBatchNo =request.getParameter("reviewBatchNo2");
			map2.put("reviewBatchNo", reviewBatchNo.trim());
			
			List<PteExpenditures> list2 = expendituresService.findExpenditures(map2);
			
			if (list2!=null){
				Iterator<PteExpenditures> ite = list2.iterator();
				while (ite.hasNext()) {
					PteExpenditures pteExpenditures = ite.next();	
											records2 = records2								+ pteExpenditures.getEmpNo()
								+ ","
								+ pteExpenditures.getEmpName()
								+ ","																+ pteExpenditures.getTotalAmount()								+ pteExpenditures.getVerifyEmpName()
								+ ","
								+ pteExpenditures.getAcceptEmpName()
											+ ","
								;
						ai++;			
				
				}
			}

			if (!records2.equals("")) {
				records = records + records2;
			}
			

			ExcelHandle eh = new ExcelHandle();

			SimpleDateFormat formatter = new SimpleDateFormat(
					"yyyy-MM-dd HH:mm:ss");
			String strDate = formatter.format(new Date());
			
			String remark = "复核批号:," + reviewBatchNo.trim()
			+ ",总份数:," + ai;
			
			
			DecimalFormat s1 = new DecimalFormat( ".00"); 
			String rmbstr= s1.format(rmb) ;
			String usdstr= s1.format(usd) ;
			String gbstr= s1.format(gb) ;					
			
			
			remark = remark + ",人民币金额:," +rmbstr+ ",美元金额:," +usdstr + ",港币金额:," +gbstr  +",打印日期:," + strDate;
			
			
			writeExcel_add(os, title,records, remark);
		} catch (Exception e) {
			e.printStackTrace();
		}
		download(mapping, form, request, response);

		return null;
	}

 2。 

 

public void writeExcel_add(OutputStream os, String title, String records,
			String remark) {
		try {
			WritableWorkbook wwb = Workbook.createWorkbook(os);
			WritableSheet ws = wwb.createSheet("TestCreateExcel",0);
			

			WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 12,
					WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
					jxl.format.Colour.BLACK);
			WritableCellFormat titleFormat = new WritableCellFormat(titleFont);
			WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10,
					WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
					jxl.format.Colour.BLACK);
			WritableCellFormat detFormat = new WritableCellFormat(detFont);

			String Title[] = title.split(",");
			int n = Title.length;

			for (int i = 0; i < n; i++) {
				Label label = new Label(i, 0, Title[i], titleFormat);
				ws.setColumnView(i, 12);
				ws.addCell(label);
			}
			String Records[] = records.split(",");

			int r = 0, l = 0;
			for (int i = 0; i < Records.length; i++) {
				if (l % n == 0) {
					r++;
					l = 0;
				}// ����
				Label label = new Label(l, r, Records[i], detFormat);
				l++;
				ws.addCell(label);
			}
			
			r++;
			String Remarks[] = remark.split(",");
			for (int i = 0; i < Remarks.length; i++) {
				if (l % n == 0) {
					r++;
					l = 0;
				}// ����
				Label label = new Label(l, r, Remarks[i], detFormat);
				l++;
				ws.addCell(label);
			}			
			wwb.write();
			wwb.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

3。

public static void download(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		java.io.BufferedInputStream bis = null;
		java.io.BufferedOutputStream bos = null;
		try {

			response.setCharacterEncoding("UTF-8");
			response.setContentType("application/x-msdownload");
			response.setHeader("Content-disposition", "attachment; filename="
					+ "exceltest.xls");

			HttpSession s = request.getSession(false);
			Employee emp = (Employee) s.getAttribute(Constants.USER_IN_SESSION);
			
			String str1=System.getProperty("user.dir");
			String str2=System.getProperty("file.separator");
			String strf = str1+str2+ emp.getEmpEname()
					+ "_output.xls";

			bis = new java.io.BufferedInputStream(new java.io.FileInputStream(
					strf));
			bos = new java.io.BufferedOutputStream(response.getOutputStream());
			byte[] buff = new byte[2048];
			int bytesRead;
			while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
				bos.write(buff, 0, bytesRead);
			}
			bos.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (bis != null) {
				try {
					bis.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				bis = null;
			}
			if (bos != null) {
				try {
					bos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				bos = null;
			}
		}

	}

 

分享到:
评论

相关推荐

    java及jsp下导出excel表格

    ### Java与JSP环境下导出Excel表格:深入解析与实践 在现代企业级应用开发中,数据导出至Excel表格是一种常见的需求,特别是在报表、数据分析和数据交换等场景中。Java作为一种广泛使用的后端开发语言,配合JSP...

    java实现JSP表格数据导出到EXCEL文件

    在Java编程环境中,将JSP表格中的数据导出到Excel文件是一种常见的需求,尤其是在数据分析、报表生成和数据交换等场景中。本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术包括Java Servlet、JSP以及...

    java编写根据模板导出excel

    根据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简单方法

    要将JSP页面的HTML表格导出为Excel,我们通常会利用HTTP响应头来设置内容类型为`application/vnd.ms-excel`,这样浏览器就会将响应的数据解析为Excel文件。以下是简单的步骤: 1. **创建HTML表格**:在JSP页面(如...

    javaweb JSP页面导出和导入excel表格

    在JavaWeb开发中,JSP(JavaServer Pages)页面经常被用来构建动态用户界面,而Excel作为常用的电子表格工具,其数据处理能力强大,广泛应用于数据管理与分析。本篇文章将详细探讨如何在JSP中实现Excel的导出和导入...

    jsp导出excel一般问题及汇总

    本篇文章主要探讨了在使用JSP导出Excel时可能会遇到的一般性问题及其解决方案。 一、导出Excel的基本流程 1. 数据准备:首先,你需要从数据库或其他数据源获取要导出的数据,将其组织成二维数组或集合。 2. 创建...

    导出jsp页面为excel文档

    - **动态生成Excel内容**:可以在JSP页面中使用Java代码动态生成Excel的具体内容,例如表格数据、样式等。 - **处理大量数据**:对于需要处理大量数据的情况,可以考虑使用更高效的方式来生成Excel文件,比如使用...

    java导出页面表格数据到excel表

    一个完整的导出html页面数据到excel表内,超简单

    java实现导入导出Excel表

    在Java编程领域,导入和导出Excel表格是一项常见的任务,特别是在数据处理、报表生成和数据分析等场景中。本项目提供了一个整合了Spring、Hibernate和Struts2(简称SSH)三大框架的小型应用示例,利用Apache POI库来...

    jsp导出Excel;简单实用!导出Excel;导出Word

    总之,JSP导出Excel和Word是常见的功能需求,通过Apache POI库可以轻松实现。正确设置响应头和使用流处理可以确保文件能被正确下载,同时根据实际需求调整数据处理和样式设置,能够创建符合业务需求的导出文件。

    JSP中导入导出Excel文件.

    在IT领域,特别是Web开发中,JSP(JavaServer Pages)...在JSP中导入导出Excel文件,Apache POI是一个强大且灵活的工具。掌握其基本用法后,可以高效地处理各种Excel文件相关的任务,从而提升Web应用的数据处理能力。

    JSP导出excel和pdf格式

    一、JSP导出Excel 1. **准备库**:在JSP中导出Excel,通常会用到Apache POI库。这是一个用于读写Microsoft Office格式文件的Java库,包括Excel。首先,需要将POI库添加到项目依赖中。 2. **创建Excel工作簿**:...

    JSP 导出Excel表格的实例

    JSP导出Excel表格实例知识分享: JSP(Java Server Pages)是一种基于Java技术用于开发动态网页的服务器端技术,它的主要作用是在HTML网页中嵌入Java代码。使用JSP导出Excel表格,可以让用户将网页中的表格数据转换...

    Java web 数据库数据与excel表格形式导入导出.docx

    Java Web 数据库数据与 Excel 表格形式导入导出 Java Web 数据库数据与 Excel 表格形式导入导出是指通过 Java Web 应用程序将数据库数据导入到 Excel 表格中,并实现数据的导出。该技术主要利用了 JXL(Java Excel ...

    JSP Struts2 分页 导出Excel

    **JSP Struts2 分页 导出Excel** 在Web开发中,经常需要处理大量数据,这时分页显示和导出功能就显得尤为重要。JSP(JavaServer Pages)和Struts2作为Java Web开发中的常见技术,可以帮助我们构建动态、交互的网页...

    jsp表格导出到EXCEL优质资料.doc

    总结来说,将JSP页面的数据导出到Excel涉及多个步骤,包括设置MIME类型、创建Excel文件、从JSP表格中提取数据、转换HTML到Excel格式、生成文件并提供下载。这个过程可以通过Apache POI等库简化,同时要注意性能和...

    excel 表格导出导入 数据库

    本文将详细介绍如何使用Java进行Excel表格的导入与导出,并将其与数据库进行关联。 #### 二、Java Excel API概述 Java Excel API是一个开源项目,它允许Java开发者读取Excel文件的内容。该API支持多种Excel版本(如...

    java,jsp,javascript中如何实现将统计表格保存成excel文件

    在Java、JSP和JavaScript中实现将统计表格保存为Excel文件是一个常见的需求,尤其是在数据分析和报表展示场景下。以下是一个详细的步骤和示例代码来帮助理解这个过程。 1. **前端JavaScript部分**: JavaScript...

    如何在jsp导出到Excel文件

    ### 如何在JSP导出到Excel文件:深入解析与实践 #### 一、通过设置Content-Type导出至Excel 在JSP环境下实现文件导出至Excel的第一种方法较为简单,主要通过修改JSP页面的`Content-Type`属性来完成。`Content-Type...

Global site tag (gtag.js) - Google Analytics