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

相關文章
相關標籤/搜索