zoukankan      html  css  js  c++  java
  • C#导出 Excel 时, 生成 CheckBox 控件

    在使用 Microsoft.Office.Interop.Excel 组件导出Excel 表格时,要把导出前的  CheckBox 控件一同导出到 excel 表格中,对于这个功能 看似很简单,但 Microsoft.Office.Interop.Excel 在生成 CheckBox 时,遇到了很大的问题,就是不能生成 CheckBox, 网上找了些资料,但这方面还是很少,有的解决方案中使用 Spire.XLS 这个组件 ,会很容易导出一个 CheckBox, 但这个组件不是免费的,有的建议使用 NPOI 这个免费开源的组件,那么问题来了,所有的导出excel 的代码就要重写,这显然增加了难度和工作量,在不改变组件的情况下,怎么才能把 CheckBox 控件导出到excel 表格中, 在研究了 Microsoft.Office.Interop.Excel 的相关接口中,终于发现可以这样导出,具体 代码如下 :

                  Range r003 = sheet.get_Range(sheet.Cells[beginRowIndex, 4],sheet.Cells[beginRowIndex, 5]);
                    r003.MergeCells = true;
                    double r3_left = (double)r003.Left;
                    double r3_top = (double)r003.Top;
                    Shape checkBoxShape1 = sheet.Shapes.AddFormControl(XlFormControl.xlCheckBox, (int)r3_left + 40, (int)r3_top, 50, 15);
                    Shape checkBoxShape2 = sheet.Shapes.AddFormControl(XlFormControl.xlCheckBox, ((int)r3_left) + 110, (int)r3_top, 50, 15);
                    Microsoft.Office.Interop.Excel.CheckBox ckb1 = sheet.CheckBoxes(checkBoxShape1.ZOrderPosition) as Microsoft.Office.Interop.Excel.CheckBox;
                    ckb1.Text = "关闭";  // checkBox 显示的文本
                    ckb1.Value = 0; // 0: 末选中, 1:选 中
                    ckb1.Enabled = false;  // false: 不可编辑, true: 可编辑
                    Microsoft.Office.Interop.Excel.CheckBox ckb2 = sheet.CheckBoxes(checkBoxShape2.ZOrderPosition) as Microsoft.Office.Interop.Excel.CheckBox;
                    ckb2.Text = "未关闭";
                    ckb2.Value = 0;
                    ckb2.Enabled = false;

      首先要 调用  Shapes.AddFormControl 的方法,先向Shapes 集合中添加一个 CheckBox 控件,才能调用 ,不然 Shapes 集合是空的,没有控件。AddFormControl 方法有三个参数:

       第一个参数: 表示控件的类型,是个枚举类型,可以是button , listbox, pictureBox, textBox, label 等, winform  中常用 的控件 

       第二个参数: 表示  添加的控件的位置,X轴坐标,即当前单元格的左边距(left)属性,int 类型

       第三个参数: 表示 添加的控的位置, Y 轴坐标,即当前单元格的 顶部边距(top) 属性,int 类型

       第四个参数: 控件的宽度, int 类型

       第五个参数: 控件的高度, int 类型

      特别提示: 第四个参数和第五个参数,无论怎么改变,控件 的文字大小是不会变的, 要想改变控件显示的字体大小,要使用  checkBoxShape1.TextEffect.FontSize 这个属性来设置, 但在运行时,无论值 怎么设置,都会抛出一个异常: TextEffect 引发了异常, 设置的值超出了范围, 对于这个,至今没有找到解决的办法 , 如果哪位大侠知道原因或怎么解决,望多多领教。

    shapes 添加 好后,就可以用  sheet.CheckBoxes(checkBoxShape2.ZOrderPosition) as Microsoft.Office.Interop.Excel.CheckBox; 这行代码来获取创建的 checkBox, 然后对 checkBox 的属性进行设置。

       

  • 相关阅读:
    jmeter----Linux上安装与使用
    Jmeter----客户端内存配置修改(Windows)
    Jmeter----生成HTML性能测试报告(Windows)
    nginx
    夜神模拟器 该网站的安全证书有问题 转载:https://bbs.yeshen.com/forum.php?mod=viewthread&tid=8864
    redis慢日志
    Nginx 转载:https://blog.csdn.net/yujing1314/article/details/107000737
    top 转载:https://mp.weixin.qq.com/s/kEY1U-CGIqQ2mKbr1aG8mA
    高可用
    shell 脚本 转载:https://mp.weixin.qq.com/s/rTsLIb2p-AE3oDPQXMQmLw
  • 原文地址:https://www.cnblogs.com/wisdo/p/9970922.html
Copyright © 2011-2022 走看看