c# 创建Excel com加载项图片对象批量操作
技术含量较低,主要是通过VBA代码转换成c#代码而来,从而实现图片批量插入、删除、另存为的批量操作,增加文档使用的通用性。
插件主要界面如下:
主要代码如下:
- private void button8_Click(object sender, RibbonControlEventArgs e)
- {
- if (checkBox4.Checked == true)
- {
- 覆盖图片名称插入();
- }
- else
- if (checkBox4.Checked == false)
- {
- excelapp = Globals.ThisAddIn.Application;
- excel.Worksheet wst = Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet;
- excel.Range inrow = excelapp.InputBox("选择单元格[行]", Type: );
- excel.Range incol = excelapp.InputBox("选择单元格[列]", Type: );
- excel.Range oucol = excelapp.InputBox("选择单元格[列]", Type: );
- int in_row = inrow.Row;
- int in_col = incol.Column;
- int ou_col = oucol.Column;
- float PicLeft, PicTop, PicWidth, PicHeight;
- int n = wst.Cells[incol.Rows.Count, in_col].End().Row;
- MessageBox.Show("共:" + n.ToString() + "张图片需要插入");
- for (int i = ; i < n + ; i++)
- {
- if (incol.Columns.Count > || inrow.Rows.Count > || oucol.Columns.Count > )
- {
- MessageBox.Show("所有的选择:只能为1行或者1列");
- break;
- }
- string str = Convert.ToString(wst.Cells[i, in_col].Value2);
- if (str == null || str == string.Empty)
- {
- continue;
- }
- wst.Cells[i, ou_col].RowHeight = editBox2.Text;
- wst.Cells[i, ou_col].ColumnWidth = editBox1.Text;
- string filename = Settings.Default.图片插入文件夹路径 + "\\" + wst.Cells[i, in_col].Value2;
- PicLeft = Convert.ToSingle(wst.Cells[i, ou_col].Left);
- PicTop = Convert.ToSingle(wst.Cells[i, ou_col].Top);
- PicWidth = Convert.ToSingle(wst.Cells[i, ou_col].Width);
- PicHeight = Convert.ToSingle(wst.Cells[i, ou_col].Height);
- if (checkBox2.Checked == true)
- {
- wst.Shapes.AddPicture(filename, MsoTriState.msoFalse, MsoTriState.msoTrue, PicLeft, PicTop, -, -);
- float r;
- foreach (excel.Shape shp in wst.Shapes)
- {
- if (shp.Type == MsoShapeType.msoPicture)
- {
- float rh = PicHeight / shp.Height;
- float rw = PicWidth / shp.Width;
- if (rw > rh)
- {
- r = rh;
- }
- else
- {
- r = rw;
- }
- //shp.Left = PicL;
- //shp.Top = PicT;
- shp.ScaleWidth(r, MsoTriState.msoFalse, MsoScaleFrom.msoScaleFromTopLeft);
- }
- }
- }
- else
- {
- wst.Shapes.AddPicture(filename, MsoTriState.msoFalse, MsoTriState.msoTrue, PicLeft, PicTop, PicWidth, PicHeight);
- }
- }
- if (checkBox1.Checked == true)
- {
- 跟随单元格();
- }
- else
- {
- 不随单元格();
- }
- }
- }
c# 创建Excel com加载项图片对象批量操作的更多相关文章
- c# 创建Excel com加载项Ribbon动态加载工作簿和工作表
使用 VSTO 创建外接程序,Gallery控件动态加载工作簿名称 代码如下: 加载工作簿名称: private void Gallery1_ItemsLoading(object sender, R ...
- VSTO - 使用Excel加载项生成表和图表
此示例显示如何创建Excel的加载项,使用户可以在其工作表中选择库存符号,然后生成一个新工作表,显示库存的历史性能. 工作表包含数据表和图表. 介绍Excel加载项通常不知道工作表包含什么.典型的加载 ...
- Office加载项安装
出自我的个人主页 Alvin Blog 前言 Excel加载项离不开安装,Excel加载项本身安装及其简单,但这是在申请下来Office开发者账户之后,再次之前都得自行安装 线上安装 微软申请开发者账 ...
- 下载安装与配置Excel 2013数据挖掘加载项(SQL Server 2012 SP1 + SQLServer2012_DMAddin.msi)
一.系统要求 在安装这个数据挖掘加载项前,你的机器必须要可以支持如下的相关系统设备: (1)操作系统:windows 7 和 windows 8,暂时不支持 windows 10. (2)excel ...
- Excel催化剂开源第3波-修复ExcelCom加载项失效问题及WPS可调用Com加载项的方法
为了还原一个干净无侵扰的网络世界,本文将不进行大规模地分发,若您觉得此文有用,不妨小范围地分享到真正有需要的人手中 功能概述 修复ExcelCom加载项常见问题,如每次需重新勾选COM加载项或COM加 ...
- Office加载项
出自我的个人主页 Alvin Blog 前言 前一段时间公司做了有关Excel 加载项的开发,也遇到了很多坑,所以在此记录一下,有两个原因,1.留给以后在用到加载项的时候,复习所用,避免 跳进同一个坑 ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Android ListView 图片异步加载和图片内存缓存
开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...
- 图片_ _Android有效解决加载大图片时内存溢出的问题 2
Android有效解决加载大图片时内存溢出的问题 博客分类: Android Android游戏虚拟机算法JNI 尽量不要使用setImageBitmap或 setImageResource或 Bit ...
随机推荐
- css多类选择器
<!DOCTYPE html> <html lang="zh-CN"> <head> <style type="text/css ...
- 解决AES算法CBC模式加密字符串后再解密出现乱码问题
问题 在使用 AES CBC 模式加密字符串后,再进行解密,解密得到的字符串出现乱码情况,通常都是前几十个字节乱码: 复现 因为是使用部门 cgi AESEncryptUtil 库,找到问题后,在这里 ...
- python_选择结构
>>> if 3>2:print('ok') ok>>> if True:print(3);print(5) >>> chTesst=['1 ...
- java多线程对CountDownLatch的使用实例
介绍 CountDownLatch是一个同步辅助类,它允许一个或多个线程一直等待直到其他线程执行完毕才开始执行. 用给定的计数初始化CountDownLatch,其含义是要被等待执行完的线程个数. 每 ...
- CSS position(定位)属性
关于CSS position,来自MDN的描述: CSS position属性用于指定一个元素在文档中的定位方式.top.right.bottom.left 属性则决定了该元素的最终位置. 然后来看看 ...
- html5中让页面缩放的4种方法
1.viewport 这种方法,不是所有的浏览器都兼容<meta name="viewport" content="width=640,minimum-scale= ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- Using variables inside Postman and Collection Runner
Variables are among the most powerful features in Postman. Using variables in your Postman requests, ...
- Node.js 专题
前提电脑中已经安装过NodeJS, npm.现在需要进行升级操作.1.查看当前的npm和NodeJs的版本: C:\Users\Administrator>node -v v4.4.3 C:\U ...
- 浅谈服务间通信【MQ在分布式系统中的使用场景】
解决的问题 一项技术的产生必然是为了解决问题而生,了解了一项技术解决的问题,就能够很轻松的理解这项技术的设计根本,从而更好地理解与使用这项技术. 消息中间件和RPC从根本上来说都是为了解决分布式系统的 ...