国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# 讀帶復選框的excel,寫excel并設置字體、邊框、背景色

2019-11-17 02:53:14
字體:
來源:轉載
供稿:網友

C# 讀帶復選框的Excel,寫excel并設置字體、邊框、背景色

這是一篇excel讀寫功能大匯總,通過C#調用Microsoft.Office.Interop.Excel.dll才能完成任何復雜格式excel的讀寫操作。

本文需要讀取的excel格式如下:

可見表格極不規則,且含有復選框等控件,現在需要將這種表格中的數據提取出來。

要求將提取出來的數據寫入到明細表結構的excel中,格式如:

這是我們常見的table表樣式,但需要操作excel的字體、背景顏色和邊框樣式。

為完成以上工作,我們先引用Microsoft.Office.Interop.Excel.dll控件:

程序中添加using引用:

using Excel = Microsoft.Office.Interop.Excel;

讀取復雜excel格式數據的代碼如下:

 PRivate void GetData(string excelPath)        {            Excel.application excelapp = new Excel.Application();            Excel.Workbook wb = excelapp.Workbooks.Open(excelPath);            Excel.Worksheet WS = (Excel.Worksheet)wb.Worksheets[1];            Excel.CheckBoxes ckbs = (Excel.CheckBoxes)WS.CheckBoxes(Type.Missing);            //讀取復選框的值            //Excel.CheckBox cbt = (Excel.CheckBox)ckbs.Item(1);            //MessageBox.Show(cbt.Value + " " + cbt.Caption);            //讀取單元格的值            //MessageBox.Show(WS.Cells.get_Range("C2").Value);            //讀取excel數據到table中            DataRow dr = resultDt.NewRow();            dr.BeginEdit();            dr["負責人"] = WS.Cells.get_Range("C2").Value;            dr["所屬區域"] = WS.Cells.get_Range("G2").Value;            dr["填寫時間"] = ((DateTime)WS.Cells.get_Range("K2").Value).ToShortDateString();            dr["經銷商姓名"] = WS.Cells.get_Range("C3").Value;            dr["手機"] = WS.Cells.get_Range("E3").Value;            dr["辦公電話"] = WS.Cells.get_Range("H3").Value;            dr["傳真"] = WS.Cells.get_Range("K3").Value;            dr["商業公司"] = WS.Cells.get_Range("C4").Value;            //讀取復選框的值            dr["經銷商性質"] = getCheckString(new int[] { 5, 6 }, ckbs);            dr["銷售渠道"] = getCheckString(new int[] { 7, 8, 9, 10 }, ckbs);            dr["操作的主要區域"] = WS.Cells.get_Range("C6").Value;            dr["分銷的主要區域"] = WS.Cells.get_Range("I6").Value;            dr["操作的主要醫院"] = WS.Cells.get_Range("C7").Value;            dr["經銷商資金實力"] = getCheckString(new int[] { 1, 2, 3, 4 }, ckbs);            dr["同行的評價"] = WS.Cells.get_Range("C9").Value;            dr["專職醫藥代表人數"] = WS.Cells.get_Range("D10").Value;            dr["市場推廣專員人數"] = WS.Cells.get_Range("H10").Value;            dr["銷售主管姓名"] = WS.Cells.get_Range("L10").Value;            //合并既往銷售品種            string hb = string.Empty;            if (WS.Cells.get_Range("D11").Value!=null)                hb = WS.Cells.get_Range("D11").Value + "/" + WS.Cells.get_Range("H11").Value + "/" + WS.Cells.get_Range("L11").Value;            if (WS.Cells.get_Range("D12").Value!=null)                hb += "、" + WS.Cells.get_Range("D12").Value + "/" + WS.Cells.get_Range("H12").Value + "/" + WS.Cells.get_Range("L12").Value;            if (WS.Cells.get_Range("D13").Value!=null)                hb += "、" + WS.Cells.get_Range("D13").Value + "/" + WS.Cells.get_Range("H13").Value + "/" + WS.Cells.get_Range("L13").Value;            dr["既往銷售主要品種數量方式"] = hb;            dr["銷售推廣的操作模式"] = WS.Cells.get_Range("D14").Value;            dr["客戶強項關系"] = getCheckString(new int[] { 11, 12, 13, 14, 15, 16, 17 }, ckbs);            dr["政府事務主要關系"] = WS.Cells.get_Range("D16").Value;            dr.EndEdit();            resultDt.Rows.Add(dr);            //dataGridView1.DataSource = resultDt.DefaultView;            wb.Close();            excelapp.Quit();        }

代碼中已經很清楚了,特別強調的是,讀取復選框的值比較麻煩一點,只有WS.CheckBoxes(Type.Missing)這個方法,直接得到excel中所有的checkbox,然后如何對應呢,如果checkbox是有text值,那還好一點,可以從text值來對應,如果復選框使用不規范,所有的復選框text屬性都是空,那就麻煩了。真不巧我就是遇到一個這樣的excel

然后我們現在來看寫操作,寫excel有很多種方法,但要想控制excel的字體、邊框、背景色等樣式,就還是得用Microsoft.Office.Interop.Excel來完成。

寫excel的代碼如下:

 string filesavePath = saveFileDialog1.FileName;                Excel.Application excel = new Excel.Application();                Excel.Workbook book = excel.Workbooks.Add(Type.Missing);                Excel.Worksheet sheet = (Excel.Worksheet)book.ActiveSheet;                // Adds table headers                for(int i=0;i<resultDt.Columns.Count;i++)                {                    sheet.Cells[1, i + 1] = resultDt.Columns[i].ColumnName;                                    }                sheet.Cells.get_Range("A1", "V1").Font.Bold = true; //設置字體為粗體                sheet.Cells.get_Range("A1", "V1").Font.Size = 14; //設置字體大小                sheet.Cells.get_Range("A1", "V1").EntireColumn.AutoFit();//自動調整列寬                sheet.Cells.get_Range("A1", "V1").EntireRow.AutoFit();//自動調整行高                sheet.Cells.get_Range("A1", "V1").Interior.Color = System.Drawing.ColorTranslator.ToOle(Color.Yellow);//設置背景色                sheet.Cells.get_Range("A1", "V" + (resultDt.Rows.Count+1)).Borders.LineStyle = 1; //設置整個數據區邊框為實線                for (int row = 0; row < resultDt.Rows.Count; row++)                {                    for (int col = 0; col < resultDt.Columns.Count; col++)                    {                        sheet.Cells[row + 2, col + 1] = resultDt.Rows[row][col].ToString();                    }                }                book.Close(true, filesavePath, Type.Missing);                excel.Quit();                label2.Text = "已成功導出到文件:"+filesavePath;

源碼下載: CODE


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 如皋市| 股票| 石嘴山市| 阳春市| 博白县| 罗山县| 明水县| 买车| 镇江市| 夏河县| 兴隆县| 彰武县| 丽水市| 余江县| 虞城县| 旬邑县| 宜宾市| 南溪县| 姜堰市| 阿城市| 五家渠市| 丰都县| 邹平县| 商丘市| 嘉荫县| 沐川县| 福安市| 牟定县| 林西县| 宁津县| 通化市| 新巴尔虎左旗| 武威市| 耿马| 土默特左旗| 永定县| 仲巴县| 莆田市| 武威市| 鄂托克旗| 海晏县|