`
tiwson
  • 浏览: 333007 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java打印excel文档实例

阅读更多
注意:此类需要引入poi.jar和jcom.jar,并且需要把jcom.dll这个文件放到jdk的bin目录下和tomcat的bin目录下。


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import jp.ne.so_net.ga2.no_ji.jcom.IDispatch;
import jp.ne.so_net.ga2.no_ji.jcom.JComException;
import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFFooter;
import org.apache.poi.hssf.usermodel.HSSFHeader;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import com.lccert.crm.project.ChemProject;
import com.lccert.crm.project.ProjectAction;

/**
 * 打印流转单类
 * @author eason
 *
 */
public class PrintFlowAction {

	private static PrintFlowAction instance = null;

	private PrintFlowAction() {

	}

	public static PrintFlowAction getInstance() {
		if (instance == null) {
			instance = new PrintFlowAction();
		}
		return instance;
	}
	
	/**
	 * 打印流转单
	 * @param flowfile
	 * @param flow
	 * @return
	 */
	public synchronized boolean Printflow(String flowfile,Flow flow) {
		POIFSFileSystem fs = null;
		HSSFWorkbook wb = null;
		FileOutputStream fileOut = null;
		boolean isok = false;
		ChemProject cp = ProjectAction.getInstance().getProjectByRid(flow.getRid());
		try {
			// 读取文件内容
			fs = new POIFSFileSystem(new FileInputStream(flowfile));
			wb = new HSSFWorkbook(fs);
			HSSFSheet sheet = wb.getSheetAt(0);
	
			HSSFRow row = sheet.getRow(1);
			HSSFCell cell = row.getCell((short) 1);
			if (cell == null)
				cell = row.createCell((short) 1);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(flow.getRid());
			cell = row.getCell((short) 5);
			if (cell == null)
				cell = row.createCell((short) 5);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(flow.getPid());
			
			row = sheet.getRow(3);
			cell = row.getCell((short) 1);
			if (cell == null)
				cell = row.createCell((short) 1);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(flow.getPdtime());
			cell = row.getCell((short) 5);
			if (cell == null)
				cell = row.createCell((short) 5);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(cp.getRptime());
			
			row = sheet.getRow(5);
			cell = row.getCell((short) 1);
			if (cell == null)
				cell = row.createCell((short) 1);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(cp.getLevel());
			cell = row.getCell((short) 5);
			if (cell == null)
				cell = row.createCell((short) 5);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(cp.getRptype());
			
			row = sheet.getRow(7);
			cell = row.getCell((short) 0);
			if (cell == null)
				cell = row.createCell((short) 0);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(flow.getTestparent());
			
			row = sheet.getRow(12);
			cell = row.getCell((short) 0);
			if (cell == null)
				cell = row.createCell((short) 0);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(flow.getTestchild());
			
			row = sheet.getRow(21);
			cell = row.getCell((short) 0);
			if (cell == null)
				cell = row.createCell((short) 0);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(cp.getSampledesc());
			
			row = sheet.getRow(34);
			cell = row.getCell((short) 0);
			if (cell == null)
				cell = row.createCell((short) 0);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(cp.getAppform());
			
			row = sheet.getRow(45);
			cell = row.getCell((short) 4);
			if (cell == null)
				cell = row.createCell((short) 4);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(flow.getPdtime()));
			
			String icode = "*" + flow.getRid().substring(4,12) + "*";
			HSSFHeader header = sheet.getHeader();
			header.setCenter(HSSFHeader.fontSize((short) 28)
					+ HSSFHeader.font("C39HrP24DmTt", "Normal") + icode);
			header.setLeft(HSSFHeader.fontSize((short) 24)
					+ HSSFHeader.font("宋体", "常规") + "LC-WS-003" + flow.getFlowtype().substring(0,2));
			HSSFFooter footer = sheet.getFooter();
			footer.setLeft(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
			footer.setRight("共1页,第1页");
	
			// 把内容写入文件
		
			fileOut = new FileOutputStream(flowfile);
			wb.write(fileOut);
			fileOut.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 
		
		//String path="D:\\test.doc"; 
		//print("Word.Application", "Documents", path); 
		if(print("Excel.Application", "Workbooks", flowfile)) {
			isok = true;
		}

		return isok;
	}
	
	
    /*** 
     *  
     * @param docApplication Application类型 
     * @param docProperty  文档的属性 
     * @param filePath 文件的绝对路径 
     */ 
    private boolean print(String docApplication,String docProperty,String filePath){ 
        ReleaseManager rm = new ReleaseManager(); 
        boolean isok = false;
        try { 
            IDispatch docApp = new IDispatch(rm, docApplication); 
            docApp.put("Visible", new Boolean(false)); 

            IDispatch wdDocuments = (IDispatch) docApp.get(docProperty); 
            Object[] arglist1 = new Object[1]; 
             
            arglist1[0] = (Object)filePath; 
            IDispatch docDocument = (IDispatch) wdDocuments.method("Open", 
                    arglist1); 
             
            docDocument.method("PrintOut", null); 
            docApp.method("Quit", null); 
            isok = true;
        }catch(JComException e){ 
            e.printStackTrace(); 
        } finally {
        	rm.release(); 
        	rm = null; 
        }
        return isok;
    }

}
分享到:
评论

相关推荐

    java打印Excel(与打印机通信、jacob)

    Java打印Excel技术主要涉及到Java应用程序如何与打印机进行交互,以便将Excel文档的内容输出到纸质媒介上。在这个过程中,一个常见的第三方库是Jacob(Java COM Bridge),它为Java提供了与COM组件交互的能力,使得...

    java解析EXCEL文件实例

    本实例将深入探讨如何使用Java来读取和解析Excel文件,主要涉及的工具有Apache POI库,它是一个强大的API,允许我们与Microsoft Office格式(包括Excel)进行交互。 首先,你需要在项目中引入Apache POI库。如果你...

    java打印Excel源码(jcom)

    通过JCOM,我们可以调用Windows系统中的Excel COM接口,实现对Excel文档的操作。例如,通过JCOM,你可以打开一个Excel文件,修改其中的数据,或者执行打印操作。 打印Excel源码的核心步骤可能包含以下部分: 1. **...

    java 打印 EXCEL与PDF.rar

    Java打印Excel和PDF是软件开发中的常见任务,尤其在企业级应用中,数据报表和文档输出至关重要。这个压缩包文件“java 打印 EXCEL与PDF.rar”显然包含了一些资源和示例,帮助开发者理解如何在Java环境中处理这两种...

    java操作excel的实例

    Excel文件格式主要有.xls(老版本)和.xlsx(新版本),两者都可以通过Java进行读写操作。以下将详细介绍如何使用Java来操作Excel。 1. **Apache POI库** Apache POI是Java社区中最广泛使用的库,它提供了对...

    java 写excel 实例

    以下将详细讲解如何使用Java来创建Excel文件,并提供一个实际的实例。 首先,我们需要引入处理Excel文件的库。Java中广泛使用的库是Apache POI项目,它提供了API来操作Microsoft Office格式的文件,包括Excel(....

    java读取Excel的实例

    在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件通常用于存储结构化的表格数据,而Java提供了一些库,如Apache POI,可以帮助我们轻松地读取和操作这些文件。Apache POI是...

    java如何读取excel文档实例.pdf

    java如何读取excel文档实例.pdf

    java导出Excel表格实例

    总之,通过本文档提供的知识点和代码解析,我们可以掌握如何使用Java编程语言结合Apache POI库,从数据库中提取数据并导出成Excel格式文件的技术。这在数据分析、报表生成等应用场景中非常常见。掌握这项技术能够...

    java导出excel复合表头简单实例

    通过学习和实践这个"java导出excel复合表头简单实例",你将掌握在Java中使用Apache POI库创建和导出Excel文件,以及设置复合表头的基本技巧。这将使你在处理数据报表或导出功能时更加得心应手。记得不断探索和学习,...

    java操作excel实例

    在Java编程中,Apache POI库是一个非常流行的用于读写Microsoft Office格式文件的库,包括Excel。本实例将深入探讨如何使用POI来操作Excel,特别是进行多Sheet的模板复制。这一过程对于批量生成类似的Excel表格,...

    JAVA excel操作实例

    本实例将探讨如何使用Java来操作Excel,主要聚焦于读取和写入Excel文件。我们将利用Apache POI库,这是一个强大的开源Java API,专为处理Microsoft Office格式的文件而设计,包括Excel。 首先,安装Apache POI库。...

    java导出excel小实例.pdf

    【Java导出Excel小实例】涉及的知识点主要集中在如何使用Java进行Excel文件的读取和创建,这通常在数据处理、报表生成等场景中非常常见。以下是对这些知识点的详细说明: 1. **Java Excel API**:Java Excel API...

    java读写excel文件

    在Java编程中,读写Excel文件是一项常见的任务,特别是在数据处理、数据分析或报表生成的场景下。本篇文章将深入探讨如何使用Java进行Excel文件的读取与写入操作,主要聚焦于Apache POI库,这是一个广泛使用的开源...

    JAVA读取Excel实例,可直接运行

    标题提到的是一个可以直接运行的JAVA读取Excel的实例,而描述则指出在解压文件后,需要调整文件路径和Excel文件名以适应本地环境。 首先,我们要了解Java中用于读取Excel的库。最常用的是Apache POI项目,它提供了...

    Java打印Excel文件所用的组件 jacob-1.14.3-x64

    Java打印Excel文件通常涉及到对微软Office接口的调用,因为Java自身并不支持直接操作Microsoft Office格式,例如Excel。在这种情况下,开发者会借助第三方库来实现这样的功能,其中一个常用的库就是`jacob`。`jacob`...

    java导出excel实例

    总的来说,Java通过Apache POI库导出Excel是一个实用且功能强大的功能,可以帮助开发者轻松地将数据转化为用户友好的Excel文件。在开发过程中,不断学习和理解POI的高级特性和最佳实践,将使你的代码更加高效和健壮...

    java 操作excel表格经典例子

    在Java编程领域,开发者经常需要处理Excel文件,如批量导入导出数据、数据分析等场景。Apache POI作为一个成熟的Java API,提供了丰富的功能来支持这些需求。本文将详细介绍如何使用Apache POI进行Java操作Excel的...

Global site tag (gtag.js) - Google Analytics