`

java操作xls与pdf文件 struts下载实例

阅读更多
jxl是一个java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

此代码在工厂框架中应用有些地方不是用详细

jsp中的代码



<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/commons/taglibs.jsp"%>

<html>
	<head>
		<title></title>

		<link rel="stylesheet" type="text/css" href="../styles/default.css" />
		<link rel="stylesheet" type="text/css" href="../styles/main.css" />
		<%@ include file="/commons/meta.jsp"%>

		<script type="text/javascript">
   function onloadXls(){
   alert("start onload...");
   document.URL="xls.do?action=onloadXls";   
   }
    function onloadPdf(){
   alert("start onload...");
   document.URL="xls.do?action=onloadPdf";   
   }
 </script>

	</head>

	<body>
		<div class="pageTitle">
			xls下载
		</div>
		<div class="list">
			<div class="listTopOperation">
				<div class="select">
					<div id="_list_IUD" class="IUD">
						<button onclick="onloadXls()">
							下载xls
						</button>
						<button onclick="onloadPdf()">
							下载pdf
						</button>
					</div>
				</div>
				<table id="mytable" border="0" cellspacing="1" cellpadding="0" width="100%">
				<thead>
					<tr>
						<th width="30px;">
							选择
						</th>
						<th>
							编号
						</th>
						<th>
							名称
						</th>
						<th>
							价格
						</th>
						<th>
							备注
						</th>
					</tr>
				</thead>
				<tbody id="_list_Tbody">
					<c:forEach var="c" items="${requestScope.com}">
						<tr selected="false" keyName="num" keyValue="${c.id}">
							<td>
								<input name="checkedlist" type="radio" value="${c.id}">
							</td>
							<td>
								${c.id}
							</td>
							<td>
								${c.productName }
							</td>
							<td>
								${c.productPrice }
							</td>
							<td>
								${c.productRemark }
							</td>
						</tr>
					</c:forEach>
				</tbody>
			</table>
			<div>
			</div>
	</body>
</html>











struts中的代码


package com.newer.business.xls.web.action;

import java.awt.Color;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.write.Colour;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.lowagie.text.Cell;
import com.lowagie.text.Chapter;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Section;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
import com.newer.business.commodity.manager.CommodityManager;
import com.newer.business.pojo.Commodity;
import com.newer.core.web.StrutsAction;

public class XlsAction extends StrutsAction {
	private CommodityManager com;
	
	public void setCom(CommodityManager com) {
		this.com = com;
	}
	//进入主页显示所有商品信息
	public ActionForward xlsIndex(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
        request.setAttribute("com",com.getAll());
		return mapping.findForward("index");
	}

/*****************************************xls下载————开始***************************************************/	
	
	// 开始下载xls
	public ActionForward onloadXls(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
System.out.println("start onload................xls");
            //调用弹出框
            response(request,response,getXlsFile(request));	
		return null;
	}
	
	 // 获得xls文件向xls文件中添加数据
	  @SuppressWarnings("deprecation")
	private File getXlsFile(HttpServletRequest request) {
		//xls文件存放路径 项目中的pdfOrxls文件夹中
		String pathName=request.getRealPath("/")+"pdfOrxls/文件xls.xls";
		
		File file = new File(pathName);
		try {
			if (!file.exists()) {
				file.createNewFile();
			}
			// 打开文件
			WritableWorkbook book = Workbook.createWorkbook(file);
			// 生成名为“第一页”的工作表,参数0表示这是第一页
			WritableSheet sheet = book.createSheet(" 第一页", 0);
			 //设置大标题样式
			 WritableFont title =    
				 new  WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD,false, UnderlineStyle.NO_UNDERLINE,   
			                Colour.RED); 
				WritableCellFormat format1 = new  WritableCellFormat(title);
				 //把水平对齐方式指定为居中  
				format1.setAlignment(jxl.format.Alignment.CENTRE);  	
		//合并第一列第一行到第三列第一行的所有单元格 	
		 sheet.mergeCells(0,0,3,0);
		 sheet.addCell(new Label(0,0,"商品信息",format1));
		 //设置小标题样式
		 WritableFont font=    
			 new  WritableFont(WritableFont.TIMES, 10 ,WritableFont.BOLD,false, UnderlineStyle.NO_UNDERLINE,   
		                Colour.BLACK);
		format1 = new  WritableCellFormat(font);
		format1.setBackground(Colour.CORAL);
		 // 把垂直对齐方式指定为居中    
		 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
		 //给xls文件添加标题
		 sheet.addCell(new Label(0,1,"商品ID",format1));
		 sheet.addCell(new Label(1,1,"商品名称",format1));
		 sheet.addCell(new Label(2,1,"商品价格",format1));
		 sheet.addCell(new Label(3,1,"商品备注",format1));
		 //设置内容样式
		 WritableFont context=    
			 new  WritableFont(WritableFont.TIMES, 10 ,WritableFont.NO_BOLD,false, UnderlineStyle.NO_UNDERLINE,   
		                Colour.GRAY_25);
		format1 = new  WritableCellFormat(context);
		 // 把垂直对齐方式指定为居中    
		 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
		//获得商品信息集合
		 List<Commodity> list=com.getAll();
		 //给xls文件添加内容
		 for(int i=0;i<list.size();i++){
		     Commodity c=list.get(i);
		     jxl.write.Number id = new jxl.write.Number(0,i+2,c.getId(),format1);
			 sheet.addCell(id);
			 Label name = new Label(1, i+2,c.getProductName(),format1);
			 sheet.addCell(name);
			 jxl.write.Number price = new jxl.write.Number(2,i+2,c.getProductPrice(),format1);
			 sheet.addCell(price);
			 Label remark= new Label(3, i+2,c.getProductRemark(),format1);
			 sheet.addCell(remark);
		 }
			// 写入数据并关闭文件
			book.write();
			book.close();

		} catch (Exception e) {
			System.out.println(e);
		}
		return file;
	}
/*****************************************xls下载————结束***************************************************/
	
	
/*****************************************pdf下载————开始***************************************************/	
	
	// 开始下载pdf
	public ActionForward onloadPdf(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
System.out.println("start onload................pdf");
		//调用弹出框
		response(request,response,getPdfFile(request));	
			return null;
	}
	
  // 获得pdf文件向pdf文件中添加数据	
  @SuppressWarnings("deprecation")
private File  getPdfFile(HttpServletRequest request){
	  
	  // 创建一个Document对象
	    Document document = new Document();
        File file=null;
	    try 
	    {      
	    	//pdf文件存放路径 项目中的pdfOrxls文件夹中
			String pathName=request.getRealPath("/")+"pdfOrxls/文件pdf.pdf";
	    	 file=new File(pathName);
		  // 生成名为文件pdf.pdf 的文档	
	      PdfWriter.getInstance(document, new FileOutputStream(pathName));
	      // 添加PDF文档的一些信息
	      document.addTitle("Hello World example");
	      document.addAuthor("Bruno Lowagie");
	      document.addSubject("This example explains how to add metadata.");
	      document.addKeywords("iText, Hello World, step 3, metadata");
	      document.addCreator("My program using iText");
	      // 打开文档,将要写入内容
	      document.open();
	      //显示中文必须设置中文字体
	      BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
	      Font  toptitle = new Font(bfChinese, 16, Font.BOLD, Color.red); 
	      Font  title = new Font(bfChinese, 10, Font.BOLD, Color.ORANGE); 
	      Font  font = new Font(bfChinese, 8, Font.COURIER, Color.GRAY);
	      //设置段落标题并设置字体
	      Paragraph chapterTitle = new Paragraph("商品信息",toptitle);
	      //创建了一个章节的对象,标题为"Chapter 1"
	      Chapter chapter1 = new Chapter(chapterTitle,1);
	      //设置为0,则在标题前面没有编号.反之...
	      chapter1.setNumberDepth(0);
	      //创建章节下的子章节.
	      Paragraph sectionTitle = new Paragraph("Version No 1.1", toptitle);
	      //添加对象,属于chapter1。
	      Section section1 = chapter1.addSection(sectionTitle);
	      //写文本内容
	      Paragraph text = new Paragraph("创建人:admin",title);
	      section1.add(text);
	      text = new Paragraph("创建时间:"+new Date(),title);
	      section1.add(text);
	      //创建表格对象
	      Table table = new Table(4);
	      //设置表格边框颜色
	      table.setBorderColor(new Color(220, 255, 100));
	      //边距
	      table.setPadding(1);
	      //间距
	      table.setSpacing(1);
	      table.setBorderWidth(1);
	      //整个表居中
	      table.setAlignment(1);
	      //单元格对象
	      Cell cell = null;
	      
	      //添加表头信息
	      cell= new Cell (new Paragraph ("商品信息",toptitle)); 
	       cell.setHeader(true);
	       cell.setColspan(4);
	       //内容居中对齐
	       cell.setHorizontalAlignment(Element.ALIGN_CENTER);
	       table.addCell(cell);
	       table.endHeaders();
	       //添加表标题
	       cell= new Cell (new Paragraph("商品ID",title));
	       cell.setBackgroundColor(Color.GRAY);
	       cell.setHorizontalAlignment(Element.ALIGN_CENTER);
	       table.addCell(cell);
	       cell= new Cell (new Paragraph("商品名称",title));
	       cell.setBackgroundColor(Color.GRAY);
	       cell.setHorizontalAlignment(Element.ALIGN_CENTER);
	       table.addCell(cell);
	       cell= new Cell (new Paragraph("商品价格",title));
	       cell.setBackgroundColor(Color.GRAY);
	       cell.setHorizontalAlignment(Element.ALIGN_CENTER);
	       table.addCell(cell);
	       cell= new Cell (new Paragraph("商品备注",title));
	       cell.setBackgroundColor(Color.GRAY);
	       cell.setHorizontalAlignment(Element.ALIGN_CENTER);
	       table.addCell(cell);
	      //添加表的内容
	         //获得商品信息集合
			 List<Commodity> list=com.getAll();
			 //给pdf文件添加内容
			 for(int i=0;i<list.size();i++){
			     Commodity c=list.get(i);
	             table.addCell(new Paragraph(c.getId()+"",font));
	             table.addCell(new Paragraph(c.getProductName(),font));
	             table.addCell(new Paragraph(c.getProductPrice()+"",font));
	             table.addCell(new Paragraph(c.getProductRemark(),font));
	      }
	      //将表格对象添加到对象中
	      section1.add(table); 

	      document.add(section1);
	
	    } 
	    catch (Exception de) 
	    { 
	      System.err.println(de.getMessage());
	    }
        finally{
	    // 关闭打开的文档
	   document.close();
        }
	return file;    
  }
/*****************************************pdf下载————结束***************************************************/
  
/***************************************下载弹出框—————开始***********************************************/
  //弹出对话框下载
	private void response(HttpServletRequest request, HttpServletResponse response,File file){
		  BufferedInputStream bis = null;
			BufferedOutputStream bos = null;
			OutputStream fos = null;
			InputStream fis = null;
		try{
		    //获得处理过的xls文件或pdf文件 file
			File uploadFile =file;
			fis = new FileInputStream(uploadFile);
			bis = new BufferedInputStream(fis);
			fos = response.getOutputStream();
			bos = new BufferedOutputStream(fos);
			// 这个就就是弹出下载对话框的关键代码
			response.setHeader("Content-disposition", "attachment;filename="
					+ URLEncoder.encode(uploadFile.getName(), "utf-8"));
			int bytesRead = 0;
			// 这个地方的同上传的一样。我就不多说了,都是用输入流进行先读,然后用输出流去写,唯一不同的是我用的是缓冲输入输出流
			byte[] buffer = new byte[8192];
			while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
				bos.write(buffer, 0, bytesRead);
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
		finally{
			try{
			bos.flush();
			fis.close();
			bis.close();
			fos.close();
			bos.close();
			}catch(Exception e){
				//e.printStackTrace();
	System.out.println("下载弹出框出错了...................");			
			}
		}
	  }
/***************************************下载弹出框—————结束***********************************************/	
  
}
  • iTextAsian.jar (322 KB)
  • 描述: 操作pdf的语言包
  • 下载次数: 5
分享到:
评论

相关推荐

    java实现浏览器在线预览offic(doc、xls、ppt)和pdf文件

    java实现浏览器在线预览offic(doc、xls、ppt)和pdf文件,本人将例子集成到项目中,已成功。 技术原理:将文件先转换成pdf文件,再将pdf文件转换成swf文件,最后显示在浏览器上。 资源描述:本资源包括swftools...

    java xls,java生成xls文档,java操作xls文件设置值

    在Java编程环境中,处理Excel(通常指.xls格式,属于老版的Microsoft Excel 97-2003工作簿)文件是一项常见的任务,这主要涉及到读取、创建和修改Excel数据。以下是一些关于如何使用Java进行这些操作的关键知识点: ...

    java生成xls文件

    在Java编程环境中,生成XLS文件(Excel 97-2003格式)是一项常见的任务,特别是在数据处理、报表生成或数据导出时。...总的来说,Apache POI库提供了一套强大的工具,使得在Java中生成和操作XLS文件变得相当方便。

    struts1 poi Excel批量导入支持xls和xlsx-源码java

    Struts1是一个经典的Java Web开发框架,而Apache POI是一个流行的API,用于处理Microsoft Office格式的文件,包括Excel。在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,...

    struts2实现文件下载实例源代码

    下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中创建相应的文件存储位置。在描述中提到的路径"D:\apache\Tomcat 6.0\webapps\Filedownload"下创建一个名为...

    java操作xls实例加代码

    本篇将详细讲解如何使用Java进行xls文件的操作,并提供相关的代码实例。 首先,Java处理xls文件主要依赖于Apache POI库,这是一个强大的API,专门用于读写Microsoft Office格式的文件,包括Excel。要开始使用,你...

    java读取xls文件

    需要注意的是,这个例子假设你的.xls文件位于与Java程序相同的目录下,或者你需要提供文件的完整路径。在实际应用中,你可能需要从用户输入、配置文件或网络位置获取文件路径。 总的来说,Apache POI库使得在Java中...

    java解析xls文件

    在Java编程环境中,解析XLS(Excel)文件是一项常见的任务,尤其在数据处理、报表生成或数据分析等场景中。XLS文件是Microsoft Excel早期版本(97-2003)使用的二进制文件格式,包含表格数据和样式信息。在Java中,...

    Java操作xls或者xlsx

    Java操作xls或者xlsx(任何office版本都支持!),使用起来非常的方便,就是一个类,需要下载对应的jar包,jar包是 &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi &lt;version&gt;3.13-beta1 &lt;groupId&gt;org.apache.poi ...

    springMVC 与文件 上传 下载 实例

    总的来说,Spring MVC提供了处理文件上传和下载的强大支持,结合Java内置的压缩功能,我们可以轻松地实现文件上传、下载和压缩功能。在实际项目中,需要注意文件安全、性能优化以及异常处理等问题,以确保服务的稳定...

    java实现doc、xls等格式转换pdf,实现在线浏览

    本篇文章将深入探讨如何使用Java技术栈,特别是Apache POI和iTextPDF库,来实现doc、xls(包括旧版的Excel 2003和新版本的Excel 2007+)以及txt、图片等多种格式的文件转换为PDF,并且实现在线浏览的功能。...

    txt,word xls转pdf pdf转swf

    txt,word xls转pdf转换pdf用到外部工具OpenOffice pdf转换swf 用到外部工具swftools 我对这个俩个工具进行了代码调用,执行引用jar,变可以调用。 文件转换pdf的时候需要jar包 下载地址:...

    java生成XLS,生成TXT

    在Java中,我们可以使用Apache POI库来操作Microsoft Office格式的文件,包括XLS。Apache POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF8格式(.xls)和新版本的XML格式(.xlsx)。如果只需要支持旧版Excel...

    java对xls读取实例.pdf

    在Java编程中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成等场景中。这个示例中展示了如何使用JXL库来读取和写入.xls格式的Excel文件。JXL是一个开源的Java库,它提供了读写Excel文件的能力。 1...

    Spire.XLS forJava 13后端处理excel文件

    Spire.XLS forJava 13无限制,功能强大的excel处理jar包,已测试,完美解决(部分小问题已提供解决方案),使用前先将jar包按照maven坐标路径放到本地仓库,不然maven会找不到jar

    免费Java Excel类库-Free Spire.XLS for Java-2.2.0

    Free Spire.XLS for Java是一款专门针对Java平台的开源Excel处理类库,它允许开发者在Java应用程序中创建、读取、修改和导出Excel文件。这个版本为2.2.0,提供了丰富的功能和易用的API,使得与Excel文件交互变得更加...

    java 导入Excel 文件,支持xls、xlsx、csv格式

    以下将详细讲解如何在Java中处理`xls`、`xlsx`和`csv`格式的文件。 首先,对于`xls`文件,这是Excel 2003及更早版本使用的文件格式,基于HSSF(Horrible Spreadsheet Format)库。Apache POI项目提供了一个强大的...

    XLS与XLSX互相转换

    XLS与XLSX互相转换,在2003的EXCEL创造的表格在2007版本中打不开的情况下,这是一个利器。

    PDF转换成DOC\XLS

    该软件能够尽可能地保留原文档的格式和图像质量,使得转换后的DOC文件与原始PDF尽可能一致。 转换过程通常包括以下步骤: 1. 安装Solid Converter PDF 7.1:首先需要在计算机上安装这个软件,确保满足系统需求。 2....

Global site tag (gtag.js) - Google Analytics