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;
}
}
分享到:
相关推荐
在Java编程环境中,有时我们需要对Excel文件进行读取和写入操作,这通常是数据分析、报表生成或数据导入导出等任务的一部分。Jacob库提供了一种有效的方法来实现这个目标,尤其是在处理老版本的Microsoft Excel(如...
标题提到的"Jacob Word excel 转PDF 合并PDF文件"是指使用Jacob库来将Microsoft Word和Excel文档转换为PDF格式,并进一步合并多个PDF文件。Jacob(Java Advanced COM Bridge)是一个Java库,它允许Java应用程序与...
这意味着你可以使用Java代码来控制那些只提供了COM接口的软件,如Microsoft Excel,从而执行诸如创建、读取、修改或转换文件等操作。 要使用JACOB进行Excel到PDF的转换,你需要遵循以下步骤: 1. **引入JAR包**:...
2. **读取Excel文件**:使用Jacob的`ActiveXComponent`和`Dispatch`类打开并读取Excel文件。通过`Dispatch.get()`和`Dispatch.call()`方法来访问和操作Excel对象,例如获取工作簿、工作表和单元格的数据。 3. **...
在Excel处理方面,Jacob同样提供了丰富的功能,可以读取和修改电子表格数据,创建图表,设置单元格样式等。以下是一些基本操作: 1. 打开Excel应用和工作簿: ```java ActiveXComponent excelApp = new ...
总结来说,"jacob_excel_reader-master"项目提供了一种利用Jacob库在Java中高效读取Excel文件的方案。通过深入理解Jacob的工作原理和项目中的API设计,开发者可以更好地应对大量Excel数据处理的需求,提升工作效率。...
Jacob提供了这样的桥梁,使得Java开发者可以利用Excel的功能,包括读取、写入和转换Excel文件。 Excel到PDF的转换通常涉及以下几个步骤: 1. **初始化Jacob**: 在Java代码中,首先需要加载Jacob的动态链接库(DLL...
这个"用Jacob自动化操作Excel"的示例是作者原创的,旨在展示如何利用Jacob库在Java程序中读写、编辑Excel文件。下面将详细阐述Jacob库的基本使用方法以及在自动化操作Excel时可能涉及的关键知识点。 1. **Jacob简介...
Jacob库是Java和COM接口之间的桥梁,它使得开发者能够通过Java代码直接调用Windows操作系统中的COM组件,这在处理与Office相关的任务时非常有用,如读取、编辑和打印文档。Jacob库提供了一个JNI(Java Native ...
标题“jacob读取word表格”涉及到的是使用Jacob库来操作Microsoft Word文档,特别是从中读取表格数据。Jacob是一个Java到COM桥接库,允许Java应用程序调用COM组件,如Microsoft Office的应用程序。 在Java中,直接...
通过Jacob,开发者可以创建、读取、修改Excel文件,执行复杂的计算,甚至运行宏,而无需依赖像Apache POI这样的纯Java解决方案。 以下是使用Jacob操作Excel的一些关键知识点: 1. **安装和配置Jacob**: 首先,你...
5. **Excel读写**:参照“使用JACOB进行Excel读写控制.txt”,学习如何使用Jacob读取Excel数据、修改单元格内容、处理公式和图表。 6. **处理Word文档的高级功能**:阅读“使用Jacob来处理Word文档.txt”,掌握如何...
通过以上步骤,开发者可以使用Jacob在Java程序中实现对Excel的复杂操作,如读取、修改、创建、合并和分析数据等。在实际项目中,可以封装成工具类,以提高代码的可复用性和维护性。例如,提供的`JacobExcelTool.java...
使用Jacob控制Excel主要涉及到创建Excel对象、打开/保存/关闭工作簿、读写单元格等操作。 ##### 3.1 创建Excel对象 在Java中,可以通过`ActiveXComponent`类创建一个指向Excel应用程序的对象。例如: ```java ...
在这个主题下,我们将深入探讨如何使用Jacob来操作Word和Excel,特别是在生成报告、处理数据和展现图表方面。 1. **Jacob简介**: Jacob全称为Java COM Bridge,它通过JNI(Java Native Interface)技术实现了Java...
例如,你可以使用Jacob来读取、写入或修改Excel工作簿。以下是一些基本操作: 1. **创建Excel对象**:与Word一样,你需要先创建Excel应用实例。 2. **打开或创建工作簿**:可以打开现有的Excel文件或创建新的工作...
纵向读取数据绘制chart 设置线条气泡颜色 黄色 Dispatch seriesChartFillFormat Dispatch get series "Fill" toDispatch ; Dispatch seriesForeColor Dispatch get seriesChartFillFormat &...
Jacob库不仅限于打印,还可以用于读写Excel文件、执行Excel宏等操作,极大地扩展了Java在Windows环境下处理Office文档的能力。 总之,Java通过Jacob库与打印机通信打印Excel文档是一种实用的技术,它结合了Java的跨...
Java Jacob调用AutoCAD读取文件是一种常见的技术实践,它允许开发者通过Java程序与AutoCAD进行交互,实现对DWG或DXF等AutoCAD文件的读取操作。Jacob(Java和COM的桥梁)是一个Java库,它使得Java应用程序能够直接...