`
Jameslyy
  • 浏览: 401678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jacob 读写Excel

阅读更多

Jacob 读写Excel

 

JacobExcelUtil

import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

/**
 * Jacob excel Util
 *
 */
public class JacobExcelUtil {

	private String file;
	private boolean readonly = false;

	private static String[] ABC = { "A", "B", "C", "D", "E", "F", "G", "H",
			"I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
			"V", "W", "X", "Y", "Z" };

	public JacobExcelUtil(String file) throws FileNotFoundException {
		this.file = file;
		File f = new File(file);
		if(!f.exists()) {
			throw new FileNotFoundException();
		}
	}

	/**
	 * 写入数据
	 * @param cells
	 */
	public void putData(List<ExcelCell> cells) throws Exception {
		if(cells == null || cells.size() == 0 ) {
			return;
		}
		
		ActiveXComponent excel = null;
		Dispatch workbooks = null;
		Dispatch workbook = null;
		Dispatch sheet = null;
		String filename = null;

		// 初始化
		ComThread.InitSTA();
		
		// open file
		try {
			filename = file;
			excel = new ActiveXComponent("Excel.Application");
			excel.setProperty("Visible", new Variant(false));
			workbooks = excel.getProperty("Workbooks").toDispatch();
			workbook = Dispatch.invoke(
					workbooks,
					"Open",
					Dispatch.Method,
					new Object[] { filename, new Variant(false),
							new Variant(readonly) },	// 是否以只读方式打开
					new int[1]).toDispatch();
	
			// put data
			sheet = Dispatch.get(workbook, "ActiveSheet").toDispatch();
			String position = null;
			int row = 0;
			int col = 0;
			int max = 26*26-1;
			for (ExcelCell c : cells) {
				row = c.getRow();
				col = c.getCol();
				if (row < 0 || col < 0 || col > max || c.getValue() == null
						|| c.getValue().trim().equals("")) {
					continue;
				}
				position = translateLocation(c.getRow(), c.getCol());
				setValue(sheet, position, c.getValue());
			}
			
		} finally {
			// close file
			try {
				Dispatch.call(workbook, "Save");
				Dispatch.call(workbook, "Close", new Variant(false));
			} finally {
				excel.invoke("Quit", new Variant[] {});
				ComThread.Release();
			}
		}
	}

	/**
	 * 转换单元格位置
	 * 最多支持26*26列
	 * @param i
	 * @param j
	 * @return
	 */
	public String translateLocation(int i, int j) {
		String loc = "";
		if (i <= 26) {
			loc = ABC[i-1] + (j);
		} else {
			loc = ABC[i/26-1] + ABC[i%26-1] + (j);
		}

		return loc;
	}

	/**
	 * 写入值
	 * 
	 * @param sheet
	 * @param position
	 * @param value
	 */
	protected void setValue(Dispatch sheet, String position, String value) {
		Dispatch cell = Dispatch.invoke(sheet, "Range", Dispatch.Get,
				new Object[] { position }, new int[1]).toDispatch();
		Dispatch.put(cell, "Value", value);
	}

	/**
	 * 读取值
	 * 
	 * @param sheet
	 * @param position
	 * @return
	 */
	protected String GetValue(Dispatch sheet, String position) {
		Dispatch cell = Dispatch.invoke(sheet, "Range", Dispatch.Get,
				new Object[] { position }, new int[1]).toDispatch();
		String value = Dispatch.get(cell, "Value").toString();
		return value;
	}
	
	public static void main(String[] args) {
		
	}

}

 

ExcelCell

public class ExcelCell {

	private int row;
	private int col;
	private String value;
	
	public ExcelCell() {
		
	}
	
	public ExcelCell(int row, int col, String value) {
		this.row = row;
		this.col = col;
		this.value = value;
	}

	public int getRow() {
		return row;
	}

	public void setRow(int row) {
		this.row = row;
	}

	public int getCol() {
		return col;
	}

	public void setCol(int col) {
		this.col = col;
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}

}
分享到:
评论

相关推荐

    运用jacob方式,java操作 excel文件读写(含配置文件和实例)

    在Java编程环境中,有时我们需要对Excel文件进行读取和写入操作,这通常是数据分析、报表生成或数据导入导出等任务的一部分。Jacob库提供了一种有效的方法来实现这个目标,尤其是在处理老版本的Microsoft Excel(如...

    Jacob Word excel 转PDF 合并PDF文件

    标题提到的"Jacob Word excel 转PDF 合并PDF文件"是指使用Jacob库来将Microsoft Word和Excel文档转换为PDF格式,并进一步合并多个PDF文件。Jacob(Java Advanced COM Bridge)是一个Java库,它允许Java应用程序与...

    jacob-excel转pdf.zip

    这意味着你可以使用Java代码来控制那些只提供了COM接口的软件,如Microsoft Excel,从而执行诸如创建、读取、修改或转换文件等操作。 要使用JACOB进行Excel到PDF的转换,你需要遵循以下步骤: 1. **引入JAR包**:...

    java+jacob解析Excel文档并插入到mysql

    2. **读取Excel文件**:使用Jacob的`ActiveXComponent`和`Dispatch`类打开并读取Excel文件。通过`Dispatch.get()`和`Dispatch.call()`方法来访问和操作Excel对象,例如获取工作簿、工作表和单元格的数据。 3. **...

    jacob实例 word excel pdf

    在Excel处理方面,Jacob同样提供了丰富的功能,可以读取和修改电子表格数据,创建图表,设置单元格样式等。以下是一些基本操作: 1. 打开Excel应用和工作簿: ```java ActiveXComponent excelApp = new ...

    jacob_excel_reader-master

    总结来说,"jacob_excel_reader-master"项目提供了一种利用Jacob库在Java中高效读取Excel文件的方案。通过深入理解Jacob的工作原理和项目中的API设计,开发者可以更好地应对大量Excel数据处理的需求,提升工作效率。...

    jacob的excel转pdf

    Jacob提供了这样的桥梁,使得Java开发者可以利用Excel的功能,包括读取、写入和转换Excel文件。 Excel到PDF的转换通常涉及以下几个步骤: 1. **初始化Jacob**: 在Java代码中,首先需要加载Jacob的动态链接库(DLL...

    用Jacob自动化操作Excel

    这个"用Jacob自动化操作Excel"的示例是作者原创的,旨在展示如何利用Jacob库在Java程序中读写、编辑Excel文件。下面将详细阐述Jacob库的基本使用方法以及在自动化操作Excel时可能涉及的关键知识点。 1. **Jacob简介...

    jacob打印机打印本地的excel和word

    Jacob库是Java和COM接口之间的桥梁,它使得开发者能够通过Java代码直接调用Windows操作系统中的COM组件,这在处理与Office相关的任务时非常有用,如读取、编辑和打印文档。Jacob库提供了一个JNI(Java Native ...

    jacob读取word表格

    标题“jacob读取word表格”涉及到的是使用Jacob库来操作Microsoft Word文档,特别是从中读取表格数据。Jacob是一个Java到COM桥接库,允许Java应用程序调用COM组件,如Microsoft Office的应用程序。 在Java中,直接...

    个人项目用jacob操作excel的代码样例

    通过Jacob,开发者可以创建、读取、修改Excel文件,执行复杂的计算,甚至运行宏,而无需依赖像Apache POI这样的纯Java解决方案。 以下是使用Jacob操作Excel的一些关键知识点: 1. **安装和配置Jacob**: 首先,你...

    jacob.jar jacob.dll以及自己封装的java类,很好用

    5. **Excel读写**:参照“使用JACOB进行Excel读写控制.txt”,学习如何使用Jacob读取Excel数据、修改单元格内容、处理公式和图表。 6. **处理Word文档的高级功能**:阅读“使用Jacob来处理Word文档.txt”,掌握如何...

    jacob操作excel

    通过以上步骤,开发者可以使用Jacob在Java程序中实现对Excel的复杂操作,如读取、修改、创建、合并和分析数据等。在实际项目中,可以封装成工具类,以提高代码的可复用性和维护性。例如,提供的`JacobExcelTool.java...

    jacob excel资料.doc

    使用Jacob控制Excel主要涉及到创建Excel对象、打开/保存/关闭工作簿、读写单元格等操作。 ##### 3.1 创建Excel对象 在Java中,可以通过`ActiveXComponent`类创建一个指向Excel应用程序的对象。例如: ```java ...

    jacob操作word,excel(图表,表格等)代码

    在这个主题下,我们将深入探讨如何使用Jacob来操作Word和Excel,特别是在生成报告、处理数据和展现图表方面。 1. **Jacob简介**: Jacob全称为Java COM Bridge,它通过JNI(Java Native Interface)技术实现了Java...

    JACOB操作word和excel示例

    例如,你可以使用Jacob来读取、写入或修改Excel工作簿。以下是一些基本操作: 1. **创建Excel对象**:与Word一样,你需要先创建Excel应用实例。 2. **打开或创建工作簿**:可以打开现有的Excel文件或创建新的工作...

    jacob直接操作Excel图表函数

    纵向读取数据绘制chart 设置线条气泡颜色 黄色 Dispatch seriesChartFillFormat Dispatch get series &quot;Fill&quot; toDispatch ; Dispatch seriesForeColor Dispatch get seriesChartFillFormat &...

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

    Jacob库不仅限于打印,还可以用于读写Excel文件、执行Excel宏等操作,极大地扩展了Java在Windows环境下处理Office文档的能力。 总之,Java通过Jacob库与打印机通信打印Excel文档是一种实用的技术,它结合了Java的跨...

    java jacob调用autocad读取文件

    Java Jacob调用AutoCAD读取文件是一种常见的技术实践,它允许开发者通过Java程序与AutoCAD进行交互,实现对DWG或DXF等AutoCAD文件的读取操作。Jacob(Java和COM的桥梁)是一个Java库,它使得Java应用程序能够直接...

Global site tag (gtag.js) - Google Analytics