`
codsoul
  • 浏览: 212847 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

jxl servlet示例

 
阅读更多

这个servlet是师哥,师姐们已经写好的了,这里就是贴出来,以备以后使用。

具体的实现方法如下:

这是完成导出excel的servlet:ExportAsExcel.java文件
其中还需要的文件是:LinkSqlServer.java和StrFormatter.java
package servelt; 
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import jxl.*;//注意引入这个jar文件
import jxl.write.*;
import beans.*;//这里存放着连接数据库,字符串编码的转化等等。 
public class ExportAsExcel extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
HttpSession session = request.getSession(true);
String fileName = (String)session.getAttribute("fileName");//前台需要把这些参数写到session中。
String querySql = (String)session.getAttribute("querySql");
       // session.removeAttribute("fileName");
// session.removeAttribute("querySql");
try
{
WritableFont arial15font = new WritableFont(WritableFont.ARIAL, 15, WritableFont.BOLD);
arial15font.setColour(jxl.format.Colour.LIGHT_BLUE);
WritableCellFormat arial15format = new WritableCellFormat (arial15font);
arial15format.setAlignment(jxl.format.Alignment.CENTRE); 
arial15format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
arial15format.setBackground(jxl.format.Colour.VERY_LIGHT_YELLOW);
File file = new File("output.xls");
WritableWorkbook workbook = Workbook.createWorkbook(file); //建立工作簿
WritableSheet sheet = workbook.createSheet("Sheet 1", 0); //建立sheet
sheet.addCell(new Label(0, 0, fileName, arial15format));
sheet.setName(fileName);
LinkSqlServer linker = new LinkSqlServer();
ResultSet rs = linker.executeQuery(querySql);
if(rs != null) {
WritableFont arial11font = new WritableFont(WritableFont.ARIAL, 11, WritableFont.BOLD); 
WritableCellFormat arial11format = new WritableCellFormat (arial11font); 
arial11format.setAlignment(jxl.format.Alignment.CENTRE);  
arial11format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
arial11format.setBackground(jxl.format.Colour.RED);
int row = 0;
int col = 1;
// 写表头信息
ResultSetMetaData rsmd = rs.getMetaData();
int []validColumn = new int[rsmd.getColumnCount()];
for(int i=0; i<rsmd.getColumnCount(); i++) {
String colName = rsmd.getColumnName(i+1);
if(colName.indexOf("NextIsURL") != -1) {
validColumn[i] = -1;
}
else if(colName.indexOf("ThisIsCheckBox") != -1){
validColumn[i] = -2;
}
else {
sheet.addCell(new Label(row, col, colName, arial11format));
validColumn[i] = getStrLen(colName) + 4;
//sheet.setColumnView(row, validColumn[i]);
row++;
}
}
col++;
if(row>1) {
sheet.mergeCells(0, 0, row-1, 0);
}
 WritableFont arial9font = new WritableFont(WritableFont.ARIAL, 9); 
WritableCellFormat arial9format = new WritableCellFormat(arial9font); 
//arial9format.setAlignment(Alignment.CENTRE);  
arial9format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
DateFormat dateFormat = new DateFormat ("yyyy-MM-dd");
WritableCellFormat dateCellFormat = new WritableCellFormat(arial9font, dateFormat); 
//dateCellFormat.setAlignment(Alignment.CENTRE);  
dateCellFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
DateFormat timeFormat = new DateFormat ("hh:mm:ss");
WritableCellFormat timeCellFormat = new WritableCellFormat(arial9font, timeFormat); 
//timeCellFormat.setAlignment(Alignment.CENTRE);  
timeCellFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
// 循环写所有记录
while (rs.next()) {
row = 0;
for(int i=0; i<rsmd.getColumnCount(); i++) {
// 如果是链接列,则不写入文件中
if(validColumn[i] == -1 || validColumn[i] == -2) {
continue;
}
// 读取每一列的类型
int columnType = rsmd.getColumnType(i+1);
switch (columnType)
{
case Types.BIT:
case Types.BIGINT:
case Types.BOOLEAN:
case Types.NUMERIC:
case Types.REAL:
case Types.SMALLINT:
case Types.TINYINT:
case Types.DECIMAL:
case Types.FLOAT:
case Types.INTEGER :
float number = rs.getFloat(i+1);
sheet.addCell(new jxl.write.Number(row, col, number, arial9format));
break;
case Types.DATE:
case Types.TIMESTAMP:
Date date = rs.getDate(i+1);
if(date == null) {
sheet.addCell(new jxl.write.Blank(row, col));
}
else {
sheet.addCell(new jxl.write.DateTime(row, col, date, dateCellFormat ));
}
break;
case Types.TIME:
Date time = rs.getDate(i+1);
if(time == null) {
sheet.addCell(new jxl.write.Blank(row, col));
}
else {
sheet.addCell(new jxl.write.DateTime(row, col, time, timeCellFormat ));
}
break;
default:
String str = rs.getString(i+1);
if(str == null) {
sheet.addCell(new jxl.write.Blank(row, col, arial9format));
}
else {
str = str.trim();
sheet.addCell(new Label(row, col, str, arial9format));
int len = getStrLen(str);
if(len > validColumn[i]) {
validColumn[i] = len;
}
}
break;
}
row++;
}
col++;
}
row = 0;
for(int i=0; i<rsmd.getColumnCount(); i++) {
if(validColumn[i] > 0){
sheet.setColumnView(row, validColumn[i]);
row++;
}
}
}
linker.closeConStmt();
workbook.write(); 
workbook.close(); 
response.setContentType("application/octet-stream");
fileName = new String(fileName.getBytes("gb2312"), "ISO8859_1");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xls" + "\"");
int len = (int)file.length();
byte []buf = new byte[len];
FileInputStream fis = new FileInputStream(file);
OutputStream out = response.getOutputStream();
len = fis.read(buf);
out.write(buf, 0, len);
out.flush();
fis.close();
file.delete();
}
catch (Exception e) {
System.out.println("[Info: ] User canceled - " + e.getMessage());
}
}

public int getStrLen(String str) {
if(str == null) {
return 0;
}
byte []buf = str.getBytes();
return buf.length;
}

public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws IOException, ServletException
{
doGet(request, response);
}
}
=======
前台的使用方法:
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
<head>
</head>
<body>
<%
session.setAttribute("querySql", "select sname,idcard,phonenum,worktime from StudentInfo");
session.setAttribute("fileName", "hope");
session.setAttribute("title", "hope");
%>
<form action="ExportAsExcel" method="post" name="form">
<input type="submit" name="ok" value="ok">
</form>
</body>
</html>
分享到:
评论

相关推荐

    利用jxl把excel中的数据导入数据库

    标签“源码”和“工具”提示我们这篇博文可能提供了实际的代码示例和可能使用的工具或框架,这对于理解和实现这个功能非常有帮助。 综上所述,这个话题涵盖了Java编程、文件I/O、Excel处理、JDBC操作和数据库交互等...

    java使用jxl打印excel报表文件

    以下是一个简单的示例: ```java import jxl.*; public class ExcelPrinter { public static void main(String[] args) throws IOException { // 创建一个新的Excel工作簿 Workbook workbook = Workbook....

    JXL 文档说明API

    通过Java操作Excel,可以在Web应用中使用JSP或Servlet调用API来实现对Excel数据表的访问。这一点在Windows操作系统之外的操作场景中尤为重要,因为用户不需要依赖特定的操作系统,就能够处理Excel数据表。 在...

    jxl.jar和jxl.api文档及使用方法

    此外,还包含了使用jxl.jar的方法和示例,以及如何将数据从JSP页面导出到MySQL数据库的步骤,这为实际应用提供了实践指导。 **JExcelAPI介绍** JExcelAPI是一个开源的Java库,最初由Nicolaas Weideman创建,用于...

    jxl实现excel上传下载全部功能

    在Java编程环境中,JXL库是一个非常流行的工具,用于读取、写入和修改Excel文件。JXL提供了方便的API,使得开发者可以轻松地处理Excel数据,而无需依赖Microsoft Office套件。本教程将深入探讨如何使用JXL库实现...

    jxl预览和打印报表

    在提供的压缩包文件"预览打印更改7-2"中,可能包含了实现以上功能的相关代码示例、配置文件或测试数据,可以帮助开发者更好地理解和实践这个过程。 总的来说,"jxl预览和打印报表"是企业级应用中常见的一种功能,它...

    jxl-2.6.jar包和常用方法例子

    jxl-2.6.jar包和常用方法例子 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel...

    JXL导出Excel数据表

    下面是一个简单的示例,展示如何使用JXL库导出数据库数据到Excel: 1. 引入JXL库: 在项目中添加JXL的依赖,如果是Maven项目,可以在pom.xml中添加以下依赖: ```xml &lt;groupId&gt;...

    jxl导入导出

    "JXL"可能包含一些示例代码或教程,帮助用户快速理解和使用JExcelAPI。 总之,JExcelAPI是Java开发者处理Excel文件的强大工具,结合Apache Commons IO和FileUpload库,可以轻松地实现Excel数据的导入导出功能。通过...

    jexcel (jxl)

    在描述中提到,当开发JSP应用时,可以通过搜索相关代码示例并进行适应性修改来使用jExcelAPI,以实现对Excel数据的操作。 **jExcelAPI (jxl) 知识点** 1. **功能**:jExcelAPI支持读取、写入和更新Excel文件,包括...

    JXL API(java 操作EXCEL不错的东西)

    JXL API在Web应用程序中尤其有用,可以通过JSP或Servlet进行调用来处理Excel数据。 **核心功能** 1. **读取数据**: JXL可以从Excel文件中读取数据,包括文本、数字、日期等,还能处理Excel的公式,对于97年以后的...

    uploadify+jxl导入导出代码备份 没有需要的jxl jar

    在描述中提到的"没有需要的jxl jar"可能是指在示例代码中并没有包含jxl的jar文件,因此在运行或复用代码时,你需要自行下载并添加jxl库到你的项目类路径中。 为了实现数据的导入导出,通常的步骤如下: 1. **文件...

    jxl教材(excle解析)

    以下是一个简单的使用JXL读取Excel文件的例子: ```java import java.io.File; import java.io.FileInputStream; import jxl.*; public class ExcelReadingExample { public static void main(String[] args) { ...

    jxl的API-Excel文件操作.pdf

    以下是一个使用jxl API从Excel文件读取数据的基本示例: ```java import java.io.InputStream; import java.io.FileInputStream; import jxl.*; // 创建只读Workbook对象,从本地文件创建 try { InputStream is =...

    JAVA 无需JXL和POI用PageOffice自动生成Excel表格.pdf

    2. **配置Web应用**:在你的Web应用配置文件(通常是`web.xml`)中,你需要添加一系列的servlet和servlet-mapping,以便PageOffice能够正常工作。这些配置项用于指定PageOffice服务器端的启动类以及它们对应的URL...

    java导出excel的详细例子

    ### Java导出Excel的详细例子 #### 背景与目的 在许多业务场景中,我们需要将数据库中的数据导出到Excel文件中,方便进行数据分析、报表制作等操作。Java作为一种广泛使用的编程语言,在处理此类任务时具有强大的...

    JXL: Java Excel API简易教程.pdf

    以下是一个示例代码片段: ```java import java.io.FileInputStream; import jxl.Workbook; try { // 从本地文件创建 Workbook FileInputStream fis = new FileInputStream("sourcefile.xls"); Workbook ...

    java导出Excel

    // Servlet示例 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=export.xls"); // 获取JSP生成的HTML表格数据 String ...

    jxl文档说明JavaexcelAPI说明手册模板.docx

    这个API使得在非Windows环境下处理Excel数据表成为可能,因为它完全基于Java编写,可以与Java Web应用如JSP和Servlet无缝集成。 在Java Excel API中,`Workbook`类代表Excel文件,它可以包含多个`Sheet`,每个`...

Global site tag (gtag.js) - Google Analytics