`
jackter
  • 浏览: 33928 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • ksgimi: 楼主,您的api不錯,就是提示有病毒,您不您打包一个无毒api ...
    AgentFlow API

jxl操作excel文檔

    博客分类:
  • JAVA
阅读更多
下面是一些利用jxl操作excel的方法,這個class不能直接用,只是一個模板,涉及到一些像是excel存儲格格式,字體,顏色,存儲格大小,文檔名稱之類的一些零星方法...
    /**
       * 產生Excel
       * @param conn 資料庫連結
       * @param form 報價單查詢Form
       * @return byte[] excel內容
       */
    public  byte[] getExcel(Connection conn, QuotationForm form)
    {          
          //初始化,字節流
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            WritableWorkbook workbook = null;
            //引用WritableWorkbook
            workbook = Workbook.createWorkbook(baos);
            //引用WritableSheet,sheet名
            WritableSheet sheet = workbook.createSheet("報價單", 0);
          
            //設置單元格的寬度
              sheet.setColumnView(0, 10);
            sheet.setColumnView(1, 12); 
            sheet.setColumnView(2, 15);
            sheet.setColumnView(3, 10);
             
            //詳細資料字體            
            WritableFont detail = new WritableFont(WritableFont.createFont("新細明體"),10,WritableFont.NO_BOLD,false);
            WritableCellFormat cellformat = new WritableCellFormat(detail); 
            //紅色字體
            WritableFont redInfo = new WritableFont(WritableFont.createFont("新細明體"),10,WritableFont.NO_BOLD,false, jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
            WritableCellFormat redcellformat = new WritableCellFormat(redInfo);
            //粉色字體
            WritableFont pinkInfo = new WritableFont(WritableFont.createFont("新細明體"),10,WritableFont.NO_BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.PINK);
            WritableCellFormat pinkcellformat = new WritableCellFormat(pinkInfo);
            //樣式(居中)
            cellformat.setAlignment(jxl.format.Alignment.CENTRE);
            redcellformat.setAlignment(jxl.format.Alignment.CENTRE);
            pinkcellformat.setAlignment(jxl.format.Alignment.CENTRE);
            //大標題           
            WritableFont title = new WritableFont(WritableFont.createFont("新細明體"), 20, WritableFont.BOLD,false);
            WritableCellFormat cellformat_title = new   WritableCellFormat(title);
            cellformat_title.setAlignment(Alignment.CENTRE);            
            //小標題
            WritableFont sub_title = new WritableFont(WritableFont.createFont("新細明體"),12,WritableFont.BOLD,false);
            WritableCellFormat cellfornat_subtitle = new WritableCellFormat(sub_title);
            cellfornat_subtitle.setAlignment(Alignment.CENTRE);
            
            
            //左對齊
            WritableCellFormat cellformat_left = new WritableCellFormat(sub_title);
            cellformat_left.setAlignment(Alignment.LEFT);
            //右對齊
            WritableCellFormat cellformat_right = new WritableCellFormat(detail);
            cellformat_right.setAlignment(Alignment.RIGHT);
            //存儲格樣式,保留兩位小數
            NumberFormat scale2format = new NumberFormat("#0.00");
            WritableCellFormat numbercellformat_scale2 = new WritableCellFormat(detail,scale2format);            
            numbercellformat_scale2.setAlignment(Alignment.RIGHT);

int num = 0;
            //表頭
            sheet.mergeCells(0, num, 14, num);
            sheet.addCell( new jxl.write.Label( 0, num, "報  價  單  查  詢", cellformat_title ) ) ;
            num ++;
            //表頭
            sheet.mergeCells(0, num, 14, num);
            sheet.addCell(new jxl.write.Label(0, num, "當前查詢條件:", cellformat_left));
            num ++;
........

           //資料(居中對齊)
            sheet.addCell(new jxl.write.Label(0, num, form.getQuoid(),cellformat));
          //右對齊
          sheet.addCell(new jxl.write.Number(1, num, Integer.parseInt(quom), cellformat_right));
          //保留兩位小數點的數字存儲格
          sheet.addCell(new jxl.write.Number(5, num, Double.valueOf(avgm).doubleValue(), numbercellformat_scale2));
          //粉紅色文字的存儲格
          sheet.addCell(new jxl.write.Label(9, ++ num, stonename, pinkcellformat));

          //寫入
            workbook.write();
            //關閉
            workbook.close();
            //傳回
            return baos.toByteArray();
     }


加下下面這段JSP代碼就完整了,你要作的就是修改一下上面那個java類的具體內容,直接調用下面這個jsp就可以了
<%--
//2008/08/20  Jackter 加入國際化支援
/**

 * <P> Title:匯出excel         	 				</P>
 
 * <P> Description:匯出excel        		    </P>
 
 * <P> Copyright:Copyright (c) 2008/08/11  		</P>
 
 * <P> Company:Everunion Tech. Ltd.             </P>
 
 * @author Jackter       
 
 * @version 0.2  Original Design from design document.
 
 */ 
--%><%@page contentType="application/octet-stream; charset=UTF-8"%><%@page import="java.sql.*,java.lang.*,java.text.*,java.util.*,java.io.*"%><%      
    
 //緩存不清除(否則文件址直接開啟時會出現找不到文件的例外,不可省略)   
 response.setHeader("Pragma", "cache");
 response.setHeader("Cache-Control", "cache");
 //response.setHeader("Pragma", "no-cache");
 //response.setHeader("Cache-Control", "no-cache");

 //取得語言環境
 String ctylgn = ((Locale)session.getAttribute("org.apache.struts.action.LOCALE")).toString();
 String alertMes = "";
 //如果是繁體中文
 if ( "zh_TW".equals(ctylgn) )
 	alertMes = "此檔案已刪除!";
 //如果是簡體中文
 else if ( "zh_CN".equals(ctylgn) )
 	alertMes = "此档案已删除!";
 //如果是英文
 else if ( "en".equals(ctylgn) )
 	alertMes = "This file has been deleted!"; 

 //取得文件名
 String filename = (String)request.getAttribute("filename");
  //設定頭部
 response.setContentType("application/octet-stream");
 //設定下載檔案名稱
 response.addHeader("Content-Disposition", "attachment;filename=" 
 		+ new String(filename.getBytes(), "ISO-8859-1"));
 //取得流物件	
 byte[] data = (byte[])request.getAttribute("ExcelDATA");
 ByteArrayInputStream in = new ByteArrayInputStream(data); 
 try
 {	     
	//建立流傳輸物件
	java.io.OutputStream os  = response.getOutputStream();
	//輸出
	int read = -1;
	byte buf[] = new byte[2048];
	int k = 0;
 	//寫入
	while ( (read = ((InputStream)in).read(buf)) != -1 )
	{
		os.write(buf, 0, read);
	}	 	
	//寫入
 	os.flush();	
	 
}
//例外
catch ( Exception e )
{ 
 	
	e.printStackTrace();
	System.out.println(alertMes);
	
}
//關閉
finally
   
{
     
	//關閉
	//os.flush();
	//os.close();
	in.close();
	in = null;
	//此段程式用於防止程式拋出"getOutputStream() has already been called for this response"例外
 	response.flushBuffer();
 	out.clear();
 	out = pageContext.pushBody();
}
%>


下面附上jxl.jar包。
  • jxl.jar (688 KB)
  • 下载次数: 14
分享到:
评论

相关推荐

    jxl操作excel文件

    ### jxl操作Excel文件知识点详解 ...虽然 jxl 的功能相比 Apache POI 较为简单,但对于简单的 Excel 文件操作而言,它是一个轻量级且高效的解决方案。在实际开发过程中,您可以根据项目的具体需求选择合适的工具。

    利用jxl操作excel文件

    本篇将详细介绍如何利用`jxl`库来操作Excel文件,并结合实例说明如何从Excel文件中提取数据并生成TXT文件。 首先,我们需要理解`jxl`库的基本结构。`jxl`库主要提供了`Workbook`、`Sheet`、`Cell`等类,分别对应...

    jxl操作excel文件例子

    JXL库支持多种Excel文件操作,包括但不限于: 1. **读取Excel文件**:你可以使用`Workbook`类的`read(File)`方法打开一个Excel文件。然后,通过`getSheets()`获取工作簿中的所有工作表,进一步使用`getSheet(int ...

    JXL操作EXCEL的各个类的解析.doc

    JXL 操作 EXCEL 的各个类的解析是 Java 语言中操作 Excel 文件的主要方法之一。JXL 通过提供了多种类来实现对 Excel 文件的读写操作。 首先,JXL 提供了一个抽象类 Workbook,该类相当于是一个工具类,用于生成 ...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    本篇文章将深入探讨JXL库在操作Excel和数据库导出Excel文件方面的应用。 首先,我们来了解JXL的基本用法。JXL支持读取和写入Biff8格式的Excel文件(即97-2003版本的.XLS文件),这涵盖了大部分常见的Excel文件需求...

    JXL 下载 Excel 文档

    1. **创建新Excel文档**:通过JXL,你可以创建一个新的Excel工作簿,并添加工作表,设置单元格的样式、颜色、字体等。 2. **读取Excel文档**:可以打开已存在的Excel文件,读取其中的数据,包括文本、数字、日期、...

    JXL操作EXCEL文件(JAVA)

    Java Excel API(简称JXL)是一个开源库,用于在Java应用程序中读取、写入和修改Excel文件。这个工具包提供了方便的接口和类,...结合提供的API文档和示例,你将能够轻松地掌握如何使用JXL来满足各种Excel操作需求。

    使用jxl操作Excel

    在Java编程环境中,处理Excel数据是一项常见的任务,而`jxl`库是一个广泛使用的开源库,专门用于读取和写入Microsoft Excel文件。本篇将详细介绍如何使用`jxl`库进行Excel的操作,包括导入、导出、读取以及更新Excel...

    JXL操作excel设置字体颜色设置单元格详解

    JXL操作Excel设置字体颜色设置单元格详解 JXL是一个韩国人写的Java操作Excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文...

    jxl操作excel实例,jxl jar包下载

    在Java编程环境中,有时我们需要处理Excel文件,例如读取数据、写入数据或者进行复杂的表格操作。在这种情况下,`jxl`库是一个非常实用的工具。`jxl`库允许开发者使用Java语言来读写Microsoft Excel文件,无需依赖于...

    java使用jxl打印excel报表文件

    JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心...

    用jxl下载excel文件

    ### 使用JXL库下载并处理Excel文件 #### 知识点概述 本文将详细介绍如何使用JXL库结合Java网络编程技术来实现从指定URL下载Excel文件,并将其保存到本地指定目录的功能。此外,我们还将简单介绍如何使用JXL库读取...

    jxl导出excel加水印.zip

    总之,`jxl`库提供了强大的功能来操作Excel文件,通过`WritableWorkbook`、`WritableSheet`和`WritableCellFormat`这三个核心类,我们可以实现自定义的Excel导出任务,包括添加水印等高级功能。在实际开发中,结合...

    关于jxl操作excel说明以及jxl.jar包下载2.6

    在Java编程环境中,处理Excel文件是一项常见的...通过阅读提供的"jxl操作EXCEL.docx"文档,你可以获得更详细的使用指南和示例代码。记住,理解和熟练掌握JXL库的使用,能极大地提升你在Java项目中处理Excel文件的效率。

    jxl 操作excel Demo

    这个"jxl操作excel Demo"显然是一份示例代码,它展示了如何使用jxl库来与Excel文件进行交互。以下是对jxl库和其在处理Excel文件中使用方法的详细说明。 1. **jxl库介绍** jxl是一个开源的Java库,允许开发者在Java...

    jxl的excel读写操作

    Java中的JXL库是一个广泛使用的库,用于读取和写入Microsoft Excel文件。这个库使得在Java应用程序中处理Excel数据变得简单,而无需依赖于Microsoft Office。以下是对JXL库在进行Excel读写操作时的一些关键知识点的...

    Struts2+JXL 下载 Excel 文档

    在"Struts2+JXL 下载 Excel 文档"的场景中,开发者通常会创建一个Action,这个Action负责生成Excel文档并提供下载。用户通过浏览器访问特定URL,Struts2框架接收到请求后,会路由到相应的Action。Action内部会利用...

    jxl操作excel.pdf

    Java中的JExcelAPI是一个用于操作Microsoft Excel文件的库,尤其适用于需要在Java应用程序中读取、写入或修改Excel数据的场景。与Apache POI相比,JExcelAPI更轻量级,对中文支持良好,且不需要依赖Windows系统,...

    Java jxl操作Excel97-2003 eclipse可运行项目实例

    这个"Java jxl操作Excel97-2003 eclipse可运行项目实例"提供了一个实用的示例,帮助开发者了解如何在Eclipse环境中使用jxl库与Excel97-2003版本的文件进行交互。 1. **jxl库介绍** jxl库是Java编程语言中的一个...

Global site tag (gtag.js) - Google Analytics