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 的属性进行设置。

       

  • 相关阅读:
    thinkphp使用ajax程序报500错误
    非隐藏转发和隐藏转发的区别及选择
    表单文件(图片)上传到服务器,权限自动变成363,无法访问
    我收到了互联网应急中心的通报!记sqlmap的正确打开方式。
    css字体可以小于12px!被小米官网打脸
    阿里云CDN添加域名80端口和443端口什么区别?
    网站使用海外服务器,国内访问很慢的解决方案
    linux下设置php文件不区分大小写
    国际化
    Spring boot2.0学习笔记(一)
  • 原文地址:https://www.cnblogs.com/wisdo/p/9970922.html
Copyright © 2011-2022 走看看