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

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结