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 方法有三个参数:spa

   第一个参数: 表示控件的类型,是个枚举类型,能够是button , listbox, pictureBox, textBox, label 等, winform  中经常使用 的控件 excel

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

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

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

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

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

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

相关文章
相关标签/搜索