当前位置: 首页 > 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;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【HTTP三个基础问题】

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

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...