【C#常用操作】
excel相关操作
using Excel = Microsoft.Office.Interop.Excel;public Excel.Application app;
public Excel.Workbooks wbs;
public Excel.Workbook wb;
public Excel.Worksheets wss;
public Excel.Worksheet ws;/// <summary>
/// 取得打开excel句柄
/// </summary>
/// <param name="pathfilename">打开文件路径</param>
public void excel_Open(string pathfilename)
{app = new Microsoft.Office.Interop.Excel.Application();wb = app.Workbooks.Open(pathfilename,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
}
/// <summary>
/// 释放句柄,并关闭excel进程
/// </summary>
public void excel_ReleaseResource()
{app.DisplayAlerts = false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存 app.AlertBeforeOverwriting = false;wb.Save();app.Quit();wb = null;wbs = null;GC.Collect();//垃圾回收Kill(app);app = null;
}/// <summary>
/// 引用dll接口
/// </summary>
/// <param name="hwnd">句柄</param>
/// <param name="ID">进程ID</param>
/// <returns></returns>
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd,out int ID);
/// <summary>
/// 关闭进程
/// </summary>
/// <param name="excel">excel应用变量</param>
public static void Kill(Microsoft.Office.Interop.Excel.Application excel)
{ IntPtr t=new IntPtr(excel.Hwnd);//得到这个句柄,具体作用是得到这块内存入口 int k= 0; GetWindowThreadProcessId(t,out k); //得到本进程唯一标志kSystem.Diagnostics.Process p=System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用p.Kill(); //关闭进程k
}//向excel中插入图片
public void excel_setImage()
{//读取图片System.Drawing.Image myimage = Image.FromFile(PicPath+strPictureName+".png");System.Drawing.Size size = new Size(myimage.Width, myimage.Height);string imagewidth = size.Width.ToString();//图片的宽度string imagehight = size.Height.ToString();//图片的高度excel_Open(strExcelPath);ws = (Excel.Worksheet)wb.Sheets[2];((Excel.Range)ws.Cells[1][1]).Select();((Excel.Range)ws.Cells[1][1]).Activate();((Excel.Range)ws.Cells[1][1]).RowHeight = 100;float PicLeft, PicTop;//为了图片能够适应单元格的宽高进行的转换PicLeft = Convert.ToSingle(((Excel.Range)ws.Cells[1][1]).Left);PicTop = Convert.ToSingle(((Excel.Range)ws.Cells[1][1]).Top);ws.Shapes.AddPicture(strImagePath, Office.Core.MsoTriState.msoFalse, Office.Core.MsoTriState.msoTrue, PicLeft, PicTop, iWidth, iHight);app.DisplayAlerts = false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存 app.AlertBeforeOverwriting = false;wb.Save();app.Quit();wb = null;wbs = null;GC.Collect();//垃圾回收Kill(app);app = null;
}
sheet操作
ws = (Excel.Worksheet)wb.Worksheets["Sheet1"];ws = (Excel.Worksheet)wb.Sheets[1];
range/cell操作
Excel.Range range = ws.Range[ws.Cells[1, 1], ws.Cells[10, 10]];int rowsint = ws.Range["C65535"].End[Excel.XlDirection.xlUp].Row;//取得有效数据的行数
int columnsint = ws.Range["IV4"].End[Excel.XlDirection.xlToLeft].Column;//取得有效数据的列数
(Excel.Range)ws.Cells[1, 1]).Text//取得或赋值单元格内容//单元格底色
((Excel.Range)ws.Cells[1, 1]).Interior.ColorIndex = 3;
操作已打开的excel
Workbooks xlBooks;
Workbook xlBook;
Worksheet xlSheet;public void excel_Test()
{// 声明一个对象Excel._Application objExcel;objExcel = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");objExcel.Visible = true;xlBooks = objExcel.Workbooks;var numBooks = xlBooks.Count;//大于0说明有多个excel被打开if (numBooks > 0){//第一个一般是最后被激活的那个excelxlBook = xlBooks[1];// 这里要注意,一定要使用被激活的sheet,否则后续这个sheet句柄无法进行操作xlSheet = (Worksheet)xlBook.ActiveSheet;//range不能直接用//xlSheet.Range[1, 1].Select(); 错误xlSheet.Cells[1, 1].Select();}
}
其他常用处理
//延时处理
public static void Delay(int milliSecond)
{int start = Environment.TickCount;while (Math.Abs(Environment.TickCount - start) < milliSecond)//毫秒{System.Windows.Forms.Application.DoEvents();//可执行某无聊的操作}
}
richTextBox处理
//避免修改部分文字后,再显示其它文字时,颜色全部变成最后设置的颜色,先全转成黑色
richTextBox1.SelectAll();
richTextBox1.SelectionColor = Color.Black;//设置部分文字颜色
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = 1;
richTextBox1.SelectionColor = Color.Red;
API使用方法可以参照官网:
https://learn.microsoft.com/zh-cn/office/vba/api
相关文章:
【C#常用操作】
excel相关操作 using Excel Microsoft.Office.Interop.Excel;public Excel.Application app; public Excel.Workbooks wbs; public Excel.Workbook wb; public Excel.Worksheets wss; public Excel.Worksheet ws;/// <summary> /// 取得打开excel句柄 /// </summary…...
深入理解CountDownLatch计数器
入理解CountDownLatch计数器 其他知识点 Java 多线程基础 深入理解aqs ReentrantLock用法详解 深入理解信号量Semaphore 深入理解并发三大特性 并发编程之深入理解CAS 深入理解CountDownLatch Java 线程池 使用用法 CountDownLatch用法详解 CountDownLatch实现原理 下面例子来…...
从SQL注入绕过最新安全狗WAF中学习fuzz
前言 SQL注入并不是很精通,通过实战绕过WAF来进行加强SQL注入能力,希望对正在学习的师傅能有一丝帮助。 安装 安装前言 我是本地搭建的环境进行测试的 环境是windows11phpstudy2018sqli-labs phpstudy的安装我不再复述,这里简单说一下安全…...
C语言每日一题:12《数据结构》相交链表。
题目: 题目链接 思路一: 1.如果最后一个节点相同说明一定有交点。 2.使用两个循环获取一下长度,同时可以获取到尾节点。 3。注意初始化lenA和lenB为1,判断下一个节点是空是可以保留尾节点的。长度会少一个,尾节点没有…...
【Spring框架】SpringMVC
目录 什么是Spring MVC实现客户端和程序之间的“连接”1.1 RequestMapping1.2GetMapping1.3PostMapping 获取参数2.1.1 获取单个参数2.1.2 获取多个参数2.1.3 获取对象2.2 后端参数重命名2.3 RequestBody 接收JSON对象2.4 获取URL中参数PathVariable2.5 上传⽂件RequestPart2.6…...
HDFS中namenode安全模式
HDFS中namenode安全模式 安全模式的现象探究step1step2step3step4 安全模式的概述控制进入时间和离开条件安全模式自动进入离开安全模式手动进入离开 安全模式的现象探究 step1 HDFS集群在停机状态下,使用hdfs -daemon命令逐个进程启动集群,观察现象首…...
blender凹凸感和置换形变
一、怎么做出凹凸感 需要三个部分的内容: 1、一个基础的纹理:告诉计算机需要用一个什么样的纹理做凹凸,纹理一般采用黑白,在计算机里面,从 0 - 1之间的值可以用从黑到白之间不同的灰度来表示因此,有一张黑白…...
力扣 343. 整数拆分
题目来源:https://leetcode.cn/problems/integer-break/description/ C题解1:动态规划。dp[i] 代表数字i拆分后得到的最大乘积。递归公式为拆分后两个数的最大乘积相乘,即 dp[i] max(dp[i], dp[j] * dp[i-j])。对于n2或3需要另外讨论。 cla…...
【JavaWeb】正则表达式
🎄欢迎来到边境矢梦的csdn博文,本文主要讲解Java 中正则表达式 的相关知识🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下🫰🫰&am…...
Vue中常用到的标签和指令
一、标签 在 Vue 中,并没有特定的标签是属于 Vue 的,因为 Vue 是一个用于构建用户界面的框架,可以与 HTML 标签一起使用。Vue 中可以使用的标签和元素基本上与 HTML 标准一致。 以下是一些常见的HTML标签,也可以在 Vue 中使用&a…...
C++设计模式之访问者模式
C访问者设计模式 文章目录 C访问者设计模式什么是设计模式什么是访问者设计模式该模式有什么优缺点优点缺点 如何使用 什么是设计模式 设计模式是一种通用的解决方案,用于解决特定的一类问题。它是一种经过验证的代码组织方式,可以帮助开发人员更快地实…...
Java8的stream常用的操作
记录一下常用的用法 定义测试对象 Datapublic class Employee {//idprivate Integer id;//姓名private String name;//年龄private Integer age;//身高private Double height;//存款private BigDecimal deposit;public Employee(Integer id, String name, Integer age, Double…...
传统计算机视觉
传统计算机视觉 计算机视觉难点图像分割基于主动轮廓的图像分割基于水平集的图像分割交互式图像分割基于模型的运动分割 目标跟踪基于光流的点目标跟踪基于均值漂移的块目标跟踪基于粒子滤波的目标跟踪基于核相关滤波的目标跟踪 目标检测一般目标检测识别之特征一般目标检测识别…...
13-3_Qt 5.9 C++开发指南_基于QReadWriteLock 的线程同步
使用互斥量时存在一个问题: 每次只能有一个线程获得互斥量的权限。如果在一个程序中有多个线程读取某个变量,使用互斥量时也必须排队。而实际上若只是读取一个变量,是可以让多个线程同时访问的,这样互斥量就会降低程序的性能。 例如…...
opencv04-掩膜
opencv04-掩膜 抠图 #include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <vector> #include <array> #include <algorithm>using namespace std; using namespace cv;int main() {str…...
python解析帆软cpt及frm文件(xml)获取源数据表及下游依赖表
#!/user/bin/evn python import os,re,openpyxl 输入:帆软脚本文件路径输出:帆软文件检查结果Excel#获取来源表 def table_scan(sql_str):# remove the /* */ commentsq re.sub(r"/\*[^*]*\*(?:[^*/][^*]*\*)*/", "", sql_str)# r…...
TypeScript
TypeScript 简称: TS ,是 JavaScript 的超集 ,简单来说就是: JS 有的 TS 都有 TypeScript Type JavaScript (在 JS 基础之上, 为 JS 添加了类型支持 ) TypeScript 是 微软 开发…...
解决启动vue前端报错:npm ERR! Missing script: “serve“
目录 一、遇到问题 二、出现报错的两个原因 三、解决办法 一、遇到问题 npm ERR! Missing script: "serve" npm ERR! npm ERR! To see a list of scripts, run: npm ERR! npm run npm ERR! A complet...
数据结构 | 线性数据结构——列表
目录 一、无序列表抽象数据类型 二、实现无序列表:链表 2.1 Node类 2.2 UnorderedList类 三、有序列表抽象数据类型 四、实现有序列表 列表是元素的集合,其中每一个元素都有一个相对于其他元素的位置。更具体地说,这种列表成为无序列表…...
【ARM 常见汇编指令学习 6 - bic(位清除), orr(位或), eor(异或)】
文章目录 BIC 指令ORR 位或指令EOR 异或指令 上篇文章:ARM 常见汇编指令学习 5 – arm64汇编指令 wzr 和 xzr 下篇文章:ARM 常见汇编指令学习 7 - LDR 指令与LDR伪指令及 mov指令 BIC 指令 指令格式 bic{条件}{S} Rd,Rn,operan…...
NLP之BERT预训练模型详解
摘要: BERT(Bidirectional Encoder Representations from Transformers)是谷歌于2018年提出的革命性自然语言处理模型,首次将基于Transformer的双向编码器架构成功应用于预训练语言模型,在多项NLP基准任务上刷新了最优…...
3步彻底解决Windows更新后开始菜单重置难题:ExplorerPatcher深度解析与实战
3步彻底解决Windows更新后开始菜单重置难题:ExplorerPatcher深度解析与实战 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 每次Wi…...
【Typescript】14-高级实战-设计类型安全的-api
高级实战:设计类型安全的 API 如果学完前面的知识,你还只是停留在“我会写几个类型、看得懂一些泛型”,那 TypeScript 其实只学了一半。真正拉开差距的地方,是你能不能把类型系统转化成设计能力,尤其是在 API 设计上。…...
HS2-HF_Patch:Honey Select 2 终极汉化与功能增强完整指南
HS2-HF_Patch:Honey Select 2 终极汉化与功能增强完整指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch 是专为 Honey Select 2 游戏…...
源代码论文分享|基于 Spring Boot 的校园商铺管理系统!
很多同学选毕业设计时都会纠结:题目太简单,怕老师觉得没含金量;题目太复杂,又怕自己做不完。 其实像校园商铺管理系统这种项目,就挺适合拿来做毕设或课程设计。它有真实场景,功能也能展开,技术…...
CANN HCCL-COMM 通信拓扑感知:16卡训练时为什么 rank3 总是最慢的那张
### CANN HCCL-COMM 通信拓扑感知:16卡训练时为什么 rank3 总是最慢的那张 去年搭了一台 8 卡 Atlas 800 服务器做 LLaMA 预训练,一切顺利。后来集群扩到 3 台共 24 卡,单卡吞吐从 1.2 tokens/s 掉到 0.7。不是线性下降,是断崖式…...
Python机器学习模型部署实战:从训练到生产环境
Python机器学习模型部署实战:从训练到生产环境 引言 作为从Python转向Rust的后端开发者,我深刻体会到机器学习模型部署的重要性。一个优秀的模型如果不能成功部署到生产环境,其价值将大打折扣。本文将从实战角度出发,详细介绍Pyth…...
Unity URP中_Material Stencil属性报错的四层根因与修复
1. 这个报错不是材质没写对,而是渲染管线在“敲门问权限” 刚在Unity 2021.3 LTS项目里切完URP(Universal Render Pipeline)后打包iOS,突然弹出一行红字: Material xxx doesnt have _Stencil property 。我第一反应是…...
Appium环境搭建:Java/Node.js/ADB/Xcode可信三角验证指南
1. 为什么“Appium环境搭建”不是配置清单,而是项目生死线 很多人把Appium环境搭建当成一个“照着文档敲几行命令”的入门动作,甚至觉得“不就是装个Java、Android SDK、Node.js,再下个Appium Desktop点开就行?”——我去年带三个…...
Linux字符设备驱动开发:从内核注册到/dev节点创建的完整实践
1. 项目概述:从零到一,理解Linux内核的“门牌号”管理在Linux的世界里,一切皆文件。这个哲学理念不仅体现在我们熟悉的普通文件上,更深刻地内嵌于设备管理中。当你敲下ls -l /dev命令,看到那些tty、null、random等文件…...
