zoukankan      html  css  js  c++  java
  • c# 创建Excel com加载项图片对象批量操作

    技术含量较低,主要是通过VBA代码转换成c#代码而来,从而实现图片批量插入、删除、另存为的批量操作,增加文档使用的通用性。

    插件主要界面如下:

    主要代码如下:

     1   private void button8_Click(object sender, RibbonControlEventArgs e) 
     2         {
     3             if (checkBox4.Checked == true)
     4             {
     5                 覆盖图片名称插入();
     6             }
     7             else
     8             if (checkBox4.Checked == false)
     9             {
    10                 excelapp = Globals.ThisAddIn.Application;
    11                 excel.Worksheet wst = Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet;
    12                 excel.Range inrow = excelapp.InputBox("选择单元格[行]", Type: 8);
    13                 excel.Range incol = excelapp.InputBox("选择单元格[列]", Type: 8);
    14                 excel.Range oucol = excelapp.InputBox("选择单元格[列]", Type: 8);
    15                 int in_row = inrow.Row;
    16                 int in_col = incol.Column;
    17                 int ou_col = oucol.Column;
    18                 float PicLeft, PicTop, PicWidth, PicHeight;
    19                 int n = wst.Cells[incol.Rows.Count, in_col].End(3).Row;
    20                 MessageBox.Show("共:" + n.ToString() + "张图片需要插入");
    21                 for (int i = 1; i < n + 1; i++)
    22                 {
    23                     if (incol.Columns.Count > 1 || inrow.Rows.Count > 1 || oucol.Columns.Count > 1)
    24                     {
    25                         MessageBox.Show("所有的选择:只能为1行或者1列");
    26                         break;
    27                     }
    28                     string str = Convert.ToString(wst.Cells[i, in_col].Value2);
    29                     if (str == null || str == string.Empty)
    30                     {
    31                         continue;
    32                     }
    33                     wst.Cells[i, ou_col].RowHeight = editBox2.Text;
    34                     wst.Cells[i, ou_col].ColumnWidth = editBox1.Text;
    35                     string filename = Settings.Default.图片插入文件夹路径 + "\" + wst.Cells[i, in_col].Value2;
    36                     PicLeft = Convert.ToSingle(wst.Cells[i, ou_col].Left);
    37                     PicTop = Convert.ToSingle(wst.Cells[i, ou_col].Top);
    38                     PicWidth = Convert.ToSingle(wst.Cells[i, ou_col].Width);
    39                     PicHeight = Convert.ToSingle(wst.Cells[i, ou_col].Height);
    40                     if (checkBox2.Checked == true)
    41                     {
    42                         wst.Shapes.AddPicture(filename, MsoTriState.msoFalse, MsoTriState.msoTrue, PicLeft, PicTop, -1, -1);
    43                         float r;
    44                         foreach (excel.Shape shp in wst.Shapes)
    45                         {
    46                             if (shp.Type == MsoShapeType.msoPicture)
    47                             {
    48                                 float rh = PicHeight / shp.Height;
    49                                 float rw = PicWidth / shp.Width;
    50                                 if (rw > rh)
    51                                 {
    52                                     r = rh;
    53                                 }
    54                                 else
    55                                 {
    56                                     r = rw;
    57                                 }
    58                                 //shp.Left = PicL;
    59                                 //shp.Top = PicT;
    60                                 shp.ScaleWidth(r, MsoTriState.msoFalse, MsoScaleFrom.msoScaleFromTopLeft);
    61                             }
    62                         }
    63                     }
    64                     else
    65                     {
    66                         wst.Shapes.AddPicture(filename, MsoTriState.msoFalse, MsoTriState.msoTrue, PicLeft, PicTop, PicWidth, PicHeight);
    67                     }
    68                 }
    69                 if (checkBox1.Checked == true)
    70                 {
    71                     跟随单元格();
    72                 }
    73                 else
    74                 {
    75                     不随单元格();
    76                 }
    77             }
    78         }
  • 相关阅读:
    OpenCV 环境搭建( Win7 32位 / VS2010 / OpenCV2.4.8 )
    OpenCV 简介
    计算机视觉简介
    使用 sigaction 函数实现可靠信号
    可靠信号机制
    信号机制的两个思考
    信号的接收和处理
    【angular5项目积累总结】列表多选样式框(1)
    数组相关方法积累(vueag等特别常用)
    Angular 4+ 修仙之路
  • 原文地址:https://www.cnblogs.com/ty1216jhy/p/10716988.html
Copyright © 2011-2022 走看看