不开源项目aspose.cells最新版23.10的一些科普

news2024/9/27 7:23:59

1.基本介绍

日常工作中我们常常会使用到Excel来做一些事情,也常常需要使用代码程序来解析Excel文件,目前来说对于poi、easypoi、easyexcel、jxls的使用已经非常多了,它们都在一些特定情况下很好的去处理Excel文件,但有些时候我们要解析的Excel不是标准的xls、xlsx格式的文件,但是可以使用Excel或WPS正常打开,特别是WPS兼容的特别好,对于一些html、xml的源文件,只要后缀为xls、xlsx格式,它总是直接打开了,在Office Excel中打开时还会有非标准Excel文件打开时的确认提示框。对于那些非标准格式的Excel文件(可能是业余选手用代码生成的,也有可能是使用Excel另存为html、xml等格式,又手工修改为xls的情况),以前我坚决的对这部分文件选择了不处理。

上次在编写一个大范围解析Excel文件的功能时,这种不规范的Excel文件实在是多,所以不得不面对这种问题,经过一番尝试发现自己解析html的方式太复杂了,变化多样,而且还不支持另存为xml的格式的文件,于是也在旁边少年的提醒下尝试着使用了`aspose.cells`的试用版本,它在格式转换、生成Excel时会生成多余的一个Sheet页《Evaluation Warning》,参考如下图所示:

image.png

所以最终采用的实现就是用它来转换一下格式,实际上它的格式转换代码使用比较简单,功能强大,支持的文件格式有很多中,常见的有:html、xml、csv等多种,参考如下代码将一段html表格页面表格转换为Excel文件,返回Workbook对象:

public static void main(String[] args) throws Exception {
    String html =
            "<html>" +
                "<head>" +
                    "<title>https://www.chendd.cn</title>" +
                "</head>" +
                "<body>" +
                    "<table>" +
                    "<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>" +
                    "<tr><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr>" +
                    "</table>" +
                "</bod>" +
            "</html>";

    System.out.println("aspose.cells version:" + CellsHelper.getVersion());

    Workbook workbook = new Workbook(new ByteArrayInputStream(html.getBytes()));
    //格式另存
    workbook.save("output.csv", SaveFormat.CSV);
    workbook.save("output.xls", SaveFormat.EXCEL_97_TO_2003);
    workbook.save("output.xlsx", SaveFormat.XLSX);
    workbook.save("output.pdf", SaveFormat.PDF);
}

格式转换后返回的是`Workbook`对象,它不是poi的API中的`Workbook`,实际上save函数可以传递OutputStream流对象,所以后续的解析可以使用poi的Workbook对象来解析OutputStream流即可。

2.其它说明

(1)`aspose.cells`不是开源免费的使用,有试用版本,试用的结果就是生成了一些《Evaluation Warning》警告;

(2)maven中央仓库 https://mvnrepository.com 中只有8.2.1版本的aspose.cells版本,是2015年的版本;

(3)aspose旗下有许多的产品,都是商业付费版本,常见的还有操作word的,与cells一样不开源,需要商业授权使用,单说cells组件支持不同的开发语言,有Java、C++、.NET等等,除了核心组件外也提供了一个web版本,貌似是用作于浏览器在线版本的Excel处理组件,官方地址:Aspose.Cells | Excel Spreadsheet Processing Java Library;

(4)截至今日2023年10月24,该组件最新 Release 版本为`aspose-cells-23.10.jar`是2023年10月14日发布;

3.旧版使用

(1)最新版本才发布俩礼拜,,网络上也没有找到一些激(破)活(解)版,针对于反编译混淆代码的阅读,难度非常大,期待有大佬的出现;

(2)从gitee上找到了一位大佬的学习实践教程,作者研究了aspose.cells的 20.7 的版本,距离最新版本发布相距 3 年多近 40 个Release版本,可参考:https://gitee.com/evilrule/crack-aspose,有需要旧版的可以移步查阅和实践,确实可以把《Evaluation Warning》警告去除;

(3)仅供学习,不可用于商业用途,给个gitee上项目的

截图说明,防止找不到了,尝试了一下setLicense只触发一次即可,通常可以写一个工具类,把调用逻辑放置在static静态块中即可;

4.新版学习

学习有许多种,除了可以学习组件的API使用外,也可以学习一下 20.7 版本激活大佬的钻研精神,所以在一系列的失败尝试后,最终终于激活 aspose-cells-23.10.jar 成功,以下是学习过程:

(1)参考 20.7 版本大佬使用的 javassist 字节码框架,本站有相关的文章示例,曾经略微学习过该框架;

(2)按照 20.7 版本大佬提供的方向重点关注 `com.aspose.cells.License` 类,里面的方法 isLicenseSet 可以理解为是否设置 License,将其修改为 true;方法 getSubscriptionExpireDate 可以理解为获取过期时间,将其修改为 2099 年;方法 a 可以看到是在转换日期格式,将其修改为当前日期;

(3)由于使用的是`Workbook`对象的工具类,将其中的对象方法 isLicensed 修改为 true;

(4)以上的几种尝试均失败,不过最终的结果是成功的,精简后的改动非常非常的小,完全可以不需要调整 License 类,对于这种最新版本的API尝试只是验证了本篇文章所述的示例,即将 html 代码转换为 csv、xls、xlsx、pdf 四种格式;

(5)本篇文章主要是简单科普一下`aspose.cells`组件的介绍,相关内容请勿用于商业用途,如有带来任何问题,均与本篇文章作者无关(请勿用于商业用途、请勿用于商业用途、请勿用于商业用途)

(6)欢迎在本站留言交流,最后附上代码运行效果图,参考如下:

运行效果预览.gif

(激活版精简图)

运行效果预览-原版精简.gif

(原始版精简图)

不开源项目aspose.cells的一些科普欢迎来到陈冬冬的个人经验分享平台icon-default.png?t=N7T8https://www.chendd.cn/blog/article/1716713331426598913.html如有任何问题请在上述原文里留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch:实现高效数据搜索与分析的利器!项目中如何应用落地,让我带你实操指南。

1.难点解答 收集到几个问题&#xff1a; elasticsearch是单独建一个项目&#xff0c;作为全文搜索使用&#xff0c;还是直接在项目中直接用&#xff1f; ES 服务器是要单独部署的&#xff0c;你可以把 ES 理解为 Redis。 新增数据时&#xff0c;插入到mysql中&#xff0c;需不…

基于SSM的幼儿园管理系统

基于SSM的幼儿园管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 管理员界面 摘要 基于SSM&#xff08;Spring、Spring MVC、MyBatis&#…

python 之输入、输出的简单介绍

文章目录 输入输出 输入 在Python中&#xff0c;您可以使用input()函数来接收用户的输入。input()函数会等待用户输入&#xff0c;并将输入的内容以字符串的形式返回给您。以下是一个简单的示例&#xff1a; user_input input("请输入您的姓名: ") # 提示用户输入…

asp.net网上商城系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio协同过滤设计

一、源码特点 asp.net网上商城系统是一套完善的web设计管理系统系统采用协同过滤算法进行商品推荐&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库 为sqlserver2008&#xff0c;使用c#语言开发 ASP…

echart案例之横向多数据柱状图(含属性详解)

一、此案例基于Vue3ts&#xff0c;效果展示&#xff1a; 二、单个属性的值&#xff1a; 1、grid 整个图表的位置 grid.containLabel 是否包含标签 1.简单来说如果是false,到底部的距离是从坐标轴线开始计算的 2.如果是true,到底部的距离就是从坐标文字底部开始计算 2、legen…

职能篇—自动驾驶产品经理

自动驾驶产品开发流程 在讲自动驾驶产品经理之前&#xff0c;先简单了解一下自动驾驶的开发体系。如上图所示&#xff0c;从产品需求开始&#xff0c;经由系统需求、系统架构、软件需求、软件架构&#xff0c;最终分解到软件代码实现模块&#xff0c;再经由MIL、SIL、HIL、VIL完…

学习笔记二十二:K8s控制器Replicaset

K8s控制器Replicaset Replicaset控制器&#xff1a;概念、原理解读Replicaset概述Replicaset工作原理&#xff1a;如何管理PodReplicaset控制器三个组成部分 Replicaset资源清单文件编写技巧Replicaset使用案例&#xff1a;部署Guestbook留言板编写一个ReplicaSet资源清单资源清…

Windows 安装 jmeter

注&#xff1a;在安装Jmeter之前&#xff0c;请先检查下电脑有没有装JDK&#xff1a;开始->运行->然后输入cmd->进入命令行界面&#xff0c;输入java -version &#xff0c; 出现以下信息就是此电脑已安装了JDK&#xff1a; 下载地址 http://jmeter.apache.org/downlo…

Hive安装配置笔记

版本说明 hadoop-3.3.6&#xff08;已安装&#xff09; mysql-8&#xff08;已安装&#xff09; hive-3.1.3 将hive解压到对应目录后做如下配置&#xff1a; 基本配置与操作 1、hive-site <configuration><!-- jdbc连接的URL --><property><name>ja…

软考高级之系统架构师之数据流图和流程图

数据流图 概述 数据流图&#xff0c;DFD&#xff0c;用于表示业务信息系统中的数据流&#xff0c;它表达系统中的据传从输入到存储间所涉及的程序。采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程&#xff0c;是结构化系统分析方法的主要表达工具…

[蓝桥双周赛]铺地砖

题目描述 小蓝家要装修了&#xff0c;小蓝爸爸买来了很多块&#xff08;你可以理解为数量无限)23规格的地砖&#xff0c;小蓝家的地板是n m规格的&#xff0c;小蓝想问你&#xff0c;能否用这些23的地砖铺满地板。 铺满地板:对于地板的每个区域&#xff0c;都有且只有一块地…

监控与升级

文章目录 主要内容一.部署Metrics1.部署代码如下&#xff08;示例&#xff09;: 2.解释 二.升级控制平面1.先确定要升级的版本代码如下&#xff08;示例&#xff09;: 2.禁止master节点接受新调度代码如下&#xff08;示例&#xff09;: 3.驱逐master节点上的现有任务代码如下&…

IP地址和子网掩码

1.域名 计算机主机名.本地名.组名.最高层域名 http://www.baidu.com 2.IP地址 每个IP地址都由4个小于256的数字组成&#xff0c;数字之间用“.”分开。Internet的IP地址共有32位&#xff0c;4个字节。它有两种表示格式&#xff1a;二进制格式和十进制格式。二进制格式是计算…

Matlab进阶绘图第32期—小提琴图(Violin Chart)

​小提琴图结合了箱线图与核密度图的特征&#xff0c;可用于展示多组数据的分布状态及概率密度。 由于Matlab中未收录小提琴图的绘制函数&#xff0c;因此需要大家自行解决。 本文在violin工具&#xff08;Hoffmann H, MathWork, 2015&#xff09;的基础上&#xff0c;对一些…

Leetcode刷题详解——在排序数组中查找元素的第一个和最后一个位置

1. 题目链接&#xff1a;34. 在排序数组中查找元素的第一个和最后一个位置 2. 题目描述&#xff1a; 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff…

C#,数值计算——分类与推理Phylo_upgma的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_upgma : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(doubl…

计算数组中各元素的平方numpy.square()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 计算数组中各元素的平方 numpy.square() 选择题 请问np.square(a1)的结果是&#xff1a; import numpy as np a1 [1,2,3] print("【显示】a1 ",a1) print("【执行】np.sq…

KNN-水仙花的分类

题目&#xff1a; 思路&#xff1a; 1、处理数据集&#xff0c;这里用的是题目已知的数据集&#xff0c;所以说需要提前将写好的数据放到excel表格里&#xff0c;再进行读取。 2、将数据集划分为训练集和测试集 3、定义K-NN模型。 4、训练模型 5、预测模型 6、计算分类精…

【鸿蒙软件开发】ArkTS基础组件之DataPanel(数据面板)、DatePicker(日期选择)

文章目录 前言一、DataPanel数据面板1.1 接口参数介绍 1.2 属性1.3 DataPanelType枚举说明1.4 深度剖析number[]参数1.5 示例代码 二、DatePicker日期选择2.1 接口参数说明 2.2 属性2.3 事件DatePickerResult对象说明 2.4 示例代码 总结 前言 DataPanel&#xff1a;数据面板组…

C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你 n 个包裹&#xff0c;你需要把它们装在箱子里&#xff0c;每个箱子装一个包裹。总共有 m 个供应商提供 不同尺寸 的箱子&#xff08;每个规格都有无数个箱…