技术含量较低,主要是通过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加载项图片对象批量操作的更多相关文章

  1. c# 创建Excel com加载项Ribbon动态加载工作簿和工作表

    使用 VSTO 创建外接程序,Gallery控件动态加载工作簿名称 代码如下: 加载工作簿名称: private void Gallery1_ItemsLoading(object sender, R ...

  2. VSTO - 使用Excel加载项生成表和图表

    此示例显示如何创建Excel的加载项,使用户可以在其工作表中选择库存符号,然后生成一个新工作表,显示库存的历史性能. 工作表包含数据表和图表. 介绍Excel加载项通常不知道工作表包含什么.典型的加载 ...

  3. Office加载项安装

    出自我的个人主页 Alvin Blog 前言 Excel加载项离不开安装,Excel加载项本身安装及其简单,但这是在申请下来Office开发者账户之后,再次之前都得自行安装 线上安装 微软申请开发者账 ...

  4. 下载安装与配置Excel 2013数据挖掘加载项(SQL Server 2012 SP1 + SQLServer2012_DMAddin.msi)

    一.系统要求 在安装这个数据挖掘加载项前,你的机器必须要可以支持如下的相关系统设备: (1)操作系统:windows 7 和  windows 8,暂时不支持 windows 10. (2)excel ...

  5. Excel催化剂开源第3波-修复ExcelCom加载项失效问题及WPS可调用Com加载项的方法

    为了还原一个干净无侵扰的网络世界,本文将不进行大规模地分发,若您觉得此文有用,不妨小范围地分享到真正有需要的人手中 功能概述 修复ExcelCom加载项常见问题,如每次需重新勾选COM加载项或COM加 ...

  6. Office加载项

    出自我的个人主页 Alvin Blog 前言 前一段时间公司做了有关Excel 加载项的开发,也遇到了很多坑,所以在此记录一下,有两个原因,1.留给以后在用到加载项的时候,复习所用,避免 跳进同一个坑 ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. Android ListView 图片异步加载和图片内存缓存

    开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...

  9. 图片_ _Android有效解决加载大图片时内存溢出的问题 2

    Android有效解决加载大图片时内存溢出的问题 博客分类: Android Android游戏虚拟机算法JNI 尽量不要使用setImageBitmap或 setImageResource或 Bit ...

随机推荐

  1. 前端工程化(二)---webpack配置

    导航 前端工程化(一)---工程基础目录搭建 前端工程化(二)---webpack配置 前端工程化(三)---Vue的开发模式 前端工程化(四)---helloWord 继续上一遍的配置,本节主要记录 ...

  2. Tomcat PermGen space的解决方案

    Tomcat报告 Caused by: java.lang.OutOfMemoryError: PermGen space异常 内存溢出PermGen space的全称是Permanent Gener ...

  3. .NET开发微信小程序-接收微信支付回调数据

    获取微信支付传回来的数据 1.MVC控制器 /// <summary> /// 付款返回的数据 /// </summary> /// <returns></r ...

  4. popup_layer插件示例

    导入popup_layer.js插件 设置好显示的div: <div class="main" id="showImg" style="disp ...

  5. 数据结构之ConcurrentHashMap

    并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap ...

  6. Linux时间子系统之(二):软件架构

    专题文档汇总目录 Notes:从框架上讲解了时间子系统,从底向上包括CPU Local TImer.Global Counter.Clock Souce/Clock Events模块管理.Tick D ...

  7. jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战

    一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...

  8. postman的安装与使用(模拟请求)

    最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...

  9. Android开发——子进程更新UI

    方式一:Handler和Message ① 实例化一个Handler并重写handlerMessage()方法 private Handler handler = newHandler() { pub ...

  10. c# xml操作(二)

    c# xml操作(二) 此博文包含图片 (-- ::)转载▼ 标签: 杂谈 分类: c# 上次,我们介绍了增加和删除xml的一些操作,这次我们将介绍如何更改和读取xml特定节点.我们依然以上次的xml ...