jacob方式,java实现excel的写数据过程

2024-02-04 22:08

本文主要是介绍jacob方式,java实现excel的写数据过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

配置:1,将jacob.jar导入到工程的classpath下 2,把jacob.dll文件拷贝到jdk/bin目录下

package excelTest1;

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


public class JacobExcelSample {
 private static ActiveXComponent xl;
 private static Dispatch workbooks = null;//
 private static Dispatch workbook = null;
 private static Dispatch currentSheet = null;// 当前sheet
 private static Dispatch sheets = null;// 获得sheets集合对象
 private static Dispatch sheet = null;// 未活动sheet

 private static String filename = null;
 private static boolean readonly = false;

 public static void main(String[] args) {
  String file = "D://workcontent//excel//jacobExcel.xls";
  OpenExcel(file, true);// false为不显示打开Excel
  addSheet();// 添加sheet
  modifySheetName("new sheet name8");// 修改当前sheet的名字
  setValue("A1", "Value", "2");//设值

  System.out.println("currentSheet的名字:"+getSheetName());// 得到工作薄的名字
  System.out.println("workbook的名字:"+getWorkbookName());// 得到工作薄的名字
  System.out.println("sheet的总数:" + getSheetCount());
  System.out.println("当前sheet的A1位置的值:" + getValue("A1", currentSheet));
  CloseExcel(false);
 }

 // 添加新的工作表(sheet),(添加后为默认为当前激活的工作表)
 private static void addSheet() {
  Dispatch.get(Dispatch.get(workbook, "sheets").toDispatch(), "add");
 }

 // 修改当前工作表的名字
 private static void modifySheetName(String newName) {
  Dispatch.put(getCurrentSheet(), "name", newName);
 }
 
 // 得到当前工作表的名字
 private static String getSheetName() {
  return Dispatch.get(currentSheet, "name").toString();
 }
 
 // 得到工作薄的名字
 private static String getWorkbookName() {
  return Dispatch.get(workbook, "name").toString();
 }

 // 得到sheets的集合对象
 private static Dispatch getSheets() {
  sheets = Dispatch.get(workbook, "sheets").toDispatch();
  return sheets;
 }

 // 通过工作表名字得到工作表(未实现)
 private static Dispatch getSheetByName(String name) {
  //
  return sheet;
 }
 // 通过工作表索引得到工作表(未实现)
 private static Dispatch getSheetByIndex(String name) {
  //
  return sheet;
 }

 // 得到当前sheet
 private static Dispatch getCurrentSheet() {
  currentSheet = Dispatch.get(workbook, "ActiveSheet").toDispatch();
  return currentSheet;
 }

 // 得到sheet的总数
 private static int getSheetCount() {
  int count = Dispatch.get(getSheets(), "count").toInt();
  return count;
 }

 // // 写入值
 private static void setValue(String position, String type, String value) {

  Dispatch cell = Dispatch.invoke(getCurrentSheet(), "Range",
    Dispatch.Get, new Object[] { position }, new int[1])
    .toDispatch();
  Dispatch.put(cell, type, value);
 }


 // 读取值
 private static String getValue(String position, Dispatch currentSheet) {
  Dispatch cell = Dispatch.invoke(currentSheet, "Range", Dispatch.Get,
    new Object[] { position }, new int[1]).toDispatch();
  String value = Dispatch.get(cell, "Value").toString();
  return value;
 }

 // 打开Excel文档
 private static void OpenExcel(String file, boolean f) {
  try {
   filename = file;
   xl = new ActiveXComponent("Excel.Application");
   xl.setProperty("Visible", new Variant(f));
   workbooks = xl.getProperty("Workbooks").toDispatch();
   workbook = Dispatch.invoke(
     workbooks,
     "Open",
     Dispatch.Method,
     new Object[] { filename, new Variant(false),
       new Variant(readonly) },// 是否以只读方式打开
     new int[1]).toDispatch();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 // 关闭Excel文档
 private static void CloseExcel(boolean f) {
  try {
   Dispatch.call(workbook, "Save");
   Dispatch.call(workbook, "Close", new Variant(f));
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   xl.invoke("Quit", new Variant[] {});
  }
 }

 

//以上有两个地方没有实现,希望知道的朋友,留个言,最好把代码附上,非常感谢!

这篇关于jacob方式,java实现excel的写数据过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678931

相关文章

MybatisPlus中几种条件构造器运用方式

《MybatisPlus中几种条件构造器运用方式》QueryWrapper是Mybatis-Plus提供的一个用于构建SQL查询条件的工具类,提供了各种方法如eq、ne、gt、ge、lt、le、lik... 目录版本介绍QueryWrapperLambdaQueryWrapperUpdateWrapperL

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Java方法重载与重写之同名方法的双面魔法(最新整理)

《Java方法重载与重写之同名方法的双面魔法(最新整理)》文章介绍了Java中的方法重载Overloading和方法重写Overriding的区别联系,方法重载是指在同一个类中,允许存在多个方法名相同... 目录Java方法重载与重写:同名方法的双面魔法方法重载(Overloading):同门师兄弟的不同绝

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav