当前位置: 首页 > news >正文

【ArcGIS Pro二次开发】(85):Aspose.Cells中的Excel操作

Aspose.Cells是一款功能强大的Excel文档处理和转换控件,开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能。


1、获取工作薄Workbook
string excelFile = "C:\Users\Administrator\Desktop\FE.xlsx";
Workbook wb = OpenWorkbook(excelFile);
2、获取工作表对象Worksheet
// 按序号
Worksheet sheet = wb.Worksheets[0];
// 按sheet名
Worksheet sheet = wb.Worksheets["sheet1"];
3、获取Cells、Cell
// 获取Cells
Cells cells = sheet.Cells
// 获取Cell,序号从0开始
Cell cell = cells[1,2]
4、读取、写入Cell值
// 读取cell值
var va = cell.Value;
string va = cell.StringValue;
...
// 写入cell值
cell.Value = "这是一个写入值";
cell.PutValue("写入值");
5、获取并设置单元格样式
// 获取style
Style style = cell.GetStyle();
// 数字型
style.Number = 4;
// 数字格式
style.Custom = "0.00";// 设置style
cell.SetStyle(style);

更多详细设置:

style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
style.Font.Name = "宋体";//文字字体
style.Font.Size = 22;//文字大小
style.IsLocked = false;//单元格解锁
style.Font.IsBold = true;//粗体
style.ForegroundColor = Color.FromArgb(0xaa, 0xcc, 0xbb);//设置背景色
style.Pattern = BackgroundType.Solid; //设置背景样式
style.IsTextWrapped = true;//单元格内容自动换行
style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //应用边界线 左边界线
style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //应用边界线 右边界线
style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //应用边界线 上边界线
style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //应用边界线 下边界线
6、保存Workbook并释放
// 保存
wb.Save(excelFile);
wb.Dispose();
7、删除行
// 获取Cells
Cells cells = sheet.Cells
// 删除单行,序号从0开始
cells.DeleteRow(3);
// 删除多行,参数2为要删的行数
cells.DeleteRows(3,10);
8、删除列
// 获取Cells
Cells cells = sheet.Cells
// 删除列,序号从0开始
cells.DeleteColumn(3);
// 删除多列,参数2为要删的列数
cells.DeleteColumns(3,10);
9、复制行(复制列同理)
// 获取Cells
Cells cells = sheet.Cells
// 复制单行,从参数2复制到参数3
cells.CopyRow(cells, 83, 85);
// 复制多行,参数4为要复制的行数
cells.CopyRows(cells, 83, 168 + i * 85, 85);
10、强制更新计算公式、设置公式
//强制更新计算公式
wb.CalculateFormula();
//给单元格设置计算公式
cell.Formula = "=AVERAGE(B1:E1)";
11、设置行高列宽
//设置行高
cells.SetRowHeight(0, 20); 
//设置列宽
cells.SetColumnWidth(1, 30);
12、合并、取消合并单元格
// 参数:起始行,起始列,行数,列数
cells.Merge(0, 0, 1, 5);
// 参数:起始行,起始列,行数,列数
cells.UnMerge(4, 2, 2, 3);
13、插入行、列
// 在序号处插入一行
cells.InsertRow(5);
// 参数2为插入的行数
cells.InsertRows(5,3);cells.InsertColumn(5);
cells.InsertColumns(5,3);
14、将字典dict的值映射写入Excel文件
public static void ExcelAttributeMapper(string excelPath, int sheet_in_col, int sheet_map_col, Dictionary<string, string> dict, int startRow = 0)
{// 打开工作薄Workbook wb = OpenWorkbook(excelPath);// 打开工作表Worksheet sheet = wb.Worksheets[0];// 逐行处理for (int i = startRow; i <= sheet.Cells.MaxDataRow; i++){//  获取目标cellCell inCell = sheet.Cells[i, sheet_in_col];Cell mapCell = sheet.Cells[i, sheet_map_col];// 属性映射if (inCell is not null && dict.ContainsKey(inCell.StringValue)){mapCell.Value = dict[inCell.StringValue];   // 赋值}}// 保存wb.Save(excelFile);wb.Dispose();
}
15、简单的写入值
public static void ExcelWriteCell(string excelPath, int row, int col, string cell_value)
{// 打开工作薄Workbook wb = OpenWorkbook(excelPath);// 打开工作表Worksheet sheet = wb.Worksheets[0];// 获取cellCell cell = sheet.Cells[row, col];// 写入cell值cell.Value = cell_value;// 保存wb.Save(excelFile);wb.Dispose();
}
16、Excel设置单元格的格式
public static void ExcelSetColStyle(string excelPath, int col, int startRow, int styleNumber = 4, int digit = 2)
{// 打开工作薄Workbook wb = OpenWorkbook(excelPath);// 打开工作表Worksheet sheet = wb.Worksheets[0];for (int i = startRow; i <= sheet.Cells.MaxDataRow; i++){// 获取cellCell cell = sheet.Cells[i, col];// 获取styleStyle style = cell.GetStyle();// 数字型style.Number = styleNumber;// 小数位数if (digit == 1) { style.Custom = "0.0"; }else if (digit == 2) { style.Custom = "0.00"; }else if (digit == 3) { style.Custom = "0.000"; }else if (digit == 4) { style.Custom = "0.0000"; }}// 保存wb.Save(excelFile);wb.Dispose();
}
17、删除Excel表中的0值行【指定多个列】
private static List<int> ExcelDeleteNullRowResult(string excelPath, List<int> deleteCols, int startRow = 0)
{List<int> list = new List<int>();// 打开工作薄Workbook wb = OpenWorkbook(excelPath);// 打开工作表Worksheet sheet = wb.Worksheets[0];// 强制更新表内的公式单元格wb.CalculateFormula();// 找出0值行for (int i = sheet.Cells.MaxDataRow; i >= startRow; i--){// 设置一个flagbool isNull = true;// 循环查找各列的值foreach (var deleteCol in deleteCols){Cell cell = sheet.Cells.GetCell(i, deleteCol);if (cell != null)  // 值不为空{string str = cell.StringValue;if (str != "") // 值不为0{if (double.Parse(str) != 0){isNull = false;break;}}}}// 输出删除列if (isNull){list.Add(i);}}// 保存wb.Save(excelFile);wb.Dispose();// 返回值return list;
}
18、从Excel文件中获取Dictionary
public static Dictionary<string, string> GetDictFromExcel(string excelPath, int col1 = 0, int col2 = 1)
{// 定义字典Dictionary<string, string> dict = new Dictionary<string, string>();// 打开工作薄Workbook wb = OpenWorkbook(excelPath);// 打开工作表Worksheet sheet = wb.Worksheets[0];// 获取key和value值for (int i = 0; i <= sheet.Cells.MaxDataRow; i++){Cell key = sheet.Cells[i, col1];Cell value = sheet.Cells[i, col2];if (key != null && value != null){if (!dict.ContainsKey(key.StringValue)){if (key.StringValue != "" && value.StringValue != "")   // 空值不纳入{dict.Add(key.StringValue, value.StringValue);}}}}wb.Dispose();// 返回dictreturn dict;
}

相关文章:

【ArcGIS Pro二次开发】(85):Aspose.Cells中的Excel操作

Aspose.Cells是一款功能强大的Excel文档处理和转换控件&#xff0c;开发人员和客户电脑无需安装Microsoft Excel也能在应用程序中实现类似Excel的强大数据管理功能。 1、获取工作薄Workbook string excelFile "C:\Users\Administrator\Desktop\FE.xlsx"; Workbook …...

基于java+springboot+vue实现的兴顺物流管理系统(文末源码+Lw)23-287

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;货运信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…...

pytorch view、expand、transpose、permute、reshape、repeat、repeat_interleave

非contiguous操作 There are a few operations on Tensors in PyTorch that do not change the contents of a tensor, but change the way the data is organized. These operations include: narrow(), view(), expand() and transpose() permute() This is where the con…...

uni-app实现下拉刷新

业务逻辑如下&#xff1a; 1.在滚动容器中加入refresher-enabled属性&#xff0c;表示为开启下拉刷新 2.监听事件&#xff0c;添加refresherrefresh事件 3.在事件监听函数中加载数据 4.关闭动画&#xff0c;添加refresher-triggered属性&#xff0c;在数据请求前开启刷新动画…...

vue ts 应用梳理

文章目录 前言一、页面传值1.1 [props](https://cn.vuejs.org/guide/components/props.html)1.2 [emit](https://cn.vuejs.org/guide/components/events.html)1.3 [store](https://pinia.vuejs.org/zh/getting-started.html) 二、实时计算2.1 [watch](https://cn.vuejs.org/gui…...

CUDA12.4文档-全文翻译

本博客参考官方文档进行介绍,全网仅此一家进行中文翻译,走过路过不要错过。 官方网址:https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍,在本人专栏中含有所有内容: https://blog.csdn.net/qq_33345365/category_12610860.html CU…...

【C 数据结构】循环链表

文章目录 【 1. 基本原理 】【 2. 循环链表的创建 】2.1 循环链表结点设计2.2 循环单链表初始化 【 3. 循环链表的 插入 】【 4. 循环单链表的 删除操作 】【 5. 循环单链表的遍历 】【 6. 实例 - 循环链表的 增删查改 】【 7. 双向循环链表 】 【 1. 基本原理 】 对于单链表以…...

Python列表

使用场景&#xff1a;列表是用来存储多组数据的 列表是可变类型 列表支持切片 1.基本规则 1.列表使用[]来表示 2.初始化列表&#xff1a;list [] 3.列表可以一次性存储多个数据&#xff1a;[数据1&#xff0c;数据2&#xff0c;数据3&#xff0c;…] 4.列表中的每一项&#…...

谈谈系列之金融直播展业畅想

近些年直播异常火热&#xff0c;对于各大中小型基金证券公司&#xff0c;也纷纷引入直播作为新型展业渠道。在这其中有一部分直接采用第三方云平台&#xff0c;也有少部分选择自建直播平台。当然自建直播平台也不是纯自研&#xff0c;大抵都是外购第三方厂商整体解决方案&#…...

【C 数据结构】双向链表

文章目录 【 1. 基本原理 】【 2. 双向链表的 创建 】实例 - 输出双向链表 【 3. 双向链表 添加节点 】【 4. 双向链表 删除节点 】【 5. 双向链表查找节点 】【 7. 双向链表更改节点 】【 8. 实例 - 双向链表的 增删查改 】 【 1. 基本原理 】 表中各节点中都只包含一个指针&…...

Leetcode刷题之消失的数字(C语言版)

Leetcode刷题之消失的数字&#xff08;C语言版&#xff09; 一、题目描述二、题目解析 一、题目描述 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 注意&#xff1a;本题相对书上原题稍作…...

LeetCode654:最大二叉树

题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 …...

AI禁区徘徊监测识别摄像机

AI禁区徘徊监测识别摄像机是一种基于人工智能技术的智能监控设备&#xff0c;用于监测禁止进入或逗留的区域。这种摄像机通过高清摄像头实时捕捉场景图像&#xff0c;利用AI算法对人员徘徊行为进行识别和监测&#xff0c;有助于提高安全防范水平&#xff0c;减少潜在的安全风险…...

【学习】什么是信创适配性测试?信创适配性测试的重要性有哪些?

随着信息技术的快速发展和广泛应用&#xff0c;信息技术应用创新&#xff08;信创&#xff09;已成为推动我国产业升级和经济发展的重要力量。在信创领域&#xff0c;适配性测试至关重要&#xff0c;它不仅关系到信创产品的质量和性能&#xff0c;还直接影响到用户的使用体验和…...

linux 配置服务开机启动

一、Centos 中配置进程开启启动 1、使用 systemd 服务&#xff1a; &#xff08;1&#xff09;创建一个名为 myapp.service 的服务文件&#xff1a; [Unit] DescriptionMyApp #描述 After #描述服务类别 [Service] Typefork…...

React中State管理的4 个关键解决方案

在 React 应用开发中,状态(state)管理是非常重要的一部分。合理地管理状态可以确保组件的行为正确,提高应用的可维护性和性能。然而,在实际使用 React 的 state 时,开发者常常会遇到一些常见的问题和陷阱。 本文将从解决问题的角度,总结 React 中 state 管理的4个关键技巧: 使…...

Testng测试框架(6)--@Factory动态地创建测试类的实例

工厂允许您动态地创建测试。例如&#xff0c;假设您想创建一个测试方法&#xff0c;该方法将多次访问网站上的某个页面&#xff0c;并且您希望使用不同的值来调用它。 public class TestWebServer {Test(parameters { "number-of-times" })public void accessPage(…...

Kubernetes(K8s)运维实战:案例解析与代码实践

一、引言 随着容器技术的普及&#xff0c;Kubernetes&#xff08;K8s&#xff09;作为容器编排领域的领军者&#xff0c;已成为企业运维不可或缺的工具。K8s以其强大的自动化管理、可扩展性和高可用性等特点&#xff0c;为运维人员提供了便捷、高效的管理手段。本文将结合具体案…...

nginx反向代理配置详解

首先配置端口 server {listen 3080; server_name 172.20.109.27 localhost;}为了解决刷新后显示404的问题&#xff0c;增加配置如下&#xff1a; location / {root html;index index.html index.htm;try_files $uri $uri.html $uri/ mongrel;}location mongrel {# ip…...

【LeetCode】单调栈类题目详解

所有题目均来自于LeetCode&#xff0c;刷题代码使用的Python3版本 单调栈 通常针对一维数组的问题&#xff0c;如果需要寻找一个元素右边或者左边第一个比自己大或者小的元素的位置&#xff0c;就可以使用单调栈&#xff0c;时间复杂度为O(n) 单调栈的本质是空间换时间&#…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...