C# worksheet設(shè)置Excel樣式(轉(zhuǎn)載)
1.例子導(dǎo)出Excel的樣式
public void Exportdatagridviewtoexcel(string Textname) { SaveFileDialog savedialog = new SaveFileDialog(); savedialog.DefaultExt = "xlsx"; savedialog.Filter = "microsoft office execl files (*.xlsx)|*.xlsx"; savedialog.FilterIndex = 0; savedialog.RestoreDirectory = true; savedialog.Title = "導(dǎo)出數(shù)據(jù)到excel表格"; savedialog.ShowDialog(); if (savedialog.FileName.IndexOf(":") < 0) return; //被點了取消 //Microsoft.office.interop.excel.application xlapp = new microsoft.office.interop.excel.application(); Microsoft.Office.Interop.Excel.Application xlapp = new Microsoft.Office.Interop.Excel.Application(); if (xlapp == null) { MessageBox.Show("可能您的機子未安裝excel,無法創(chuàng)建excel對象!", "系統(tǒng)提示 ", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Microsoft.Office.Interop.Excel.Workbooks workbooks = xlapp.Workbooks; Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 string ADD = "盤點錄入明細(xì)表 時間:" + DateTime.Now.ToShortDateString(); worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 7]).MergeCells = true; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 7]).Font.Bold = true;// worksheet.Cells[1, 1] = " " + Textname; worksheet.Cells[2, 1] = "" + "使用科室"; worksheet.get_Range(worksheet.Cells[2, 2], worksheet.Cells[2, 3]).MergeCells = true; worksheet.get_Range(worksheet.Cells[2, 5], worksheet.Cells[2, 7]).MergeCells = true; //worksheet.Cells[2, 5] = "" + "年月日"; worksheet.Cells[3, 1] = "患者姓名"; worksheet.Cells[3, 2] = " "; worksheet.Cells[3, 3] = "性別"; worksheet.Cells[3, 4] = " "; worksheet.Cells[3, 5] = "年齡"; worksheet.Cells[4, 1] = "住院號"; worksheet.Cells[4, 2] = " "; worksheet.Cells[4, 3] = "床位號"; worksheet.Cells[4, 4] = " "; worksheet.Cells[4, 5] = "手術(shù)名稱"; worksheet.Cells[5, 1] = "使用部位"; worksheet.Cells[5, 2] = " "; worksheet.Cells[5, 3] = "手術(shù)日期"; worksheet.Cells[5, 4] = " "; worksheet.Cells[5, 5] = "醫(yī)保類型"; worksheet.get_Range(worksheet.Cells[3, 6], worksheet.Cells[3, 7]).MergeCells = true; worksheet.get_Range(worksheet.Cells[4, 6], worksheet.Cells[4, 7]).MergeCells = true; worksheet.get_Range(worksheet.Cells[5, 6], worksheet.Cells[5, 7]).MergeCells = true; worksheet.Cells[5, 6] = " "; worksheet.Cells[4, 6] = " "; worksheet.Cells[3, 6] = " "; worksheet.Cells[6, 1] = "生產(chǎn)廠家"; worksheet.get_Range(worksheet.Cells[6, 2], worksheet.Cells[6, 3]).MergeCells = true; worksheet.Cells[6, 4] = "注冊證號"; worksheet.get_Range(worksheet.Cells[6, 5], worksheet.Cells[6, 7]).MergeCells = true; worksheet.Cells[7, 1] = "生產(chǎn)日期"; worksheet.Cells[7, 2] = " "; worksheet.Cells[7, 3] = "滅菌日期"; worksheet.Cells[7, 4] = " "; worksheet.Cells[7, 5] = "有效日期"; worksheet.get_Range(worksheet.Cells[7, 6], worksheet.Cells[7, 7]).MergeCells = true; worksheet.Cells[7, 6] = " "; worksheet.Cells[8, 1] = "供貨單位"; worksheet.get_Range(worksheet.Cells[8, 2], worksheet.Cells[8, 3]).MergeCells = true; worksheet.Cells[8, 4] = "供貨商簽字"; worksheet.Cells[8, 5] = " "; worksheet.Cells[8, 6] = "聯(lián)系電話"; worksheet.Cells[8, 7] = " "; worksheet.Cells[9, 1] = "產(chǎn)品名稱"; worksheet.Cells[9, 2] = "規(guī)格型號"; worksheet.Cells[9, 3] = "產(chǎn)品批號"; worksheet.Cells[9, 4] = "單價"; worksheet.Cells[9, 5] = "數(shù)量"; worksheet.Cells[9, 6] = "單位"; worksheet.Cells[9, 7] = "金額 "; worksheet.Cells[10, 1] = " "; worksheet.Cells[10, 2] = " "; worksheet.Cells[10, 3] = " "; worksheet.Cells[10, 4] = " "; worksheet.Cells[10, 5] = " "; worksheet.Cells[10, 6] = " "; worksheet.Cells[10, 7] = " "; worksheet.Cells[11, 1] = " "; worksheet.Cells[11, 2] = " "; worksheet.Cells[11, 3] = " "; worksheet.Cells[11, 4] = " "; worksheet.Cells[11, 5] = " "; worksheet.Cells[11, 6] = " "; worksheet.Cells[11, 7] = " "; worksheet.Cells[12, 1] = " "; worksheet.Cells[12, 2] = " "; worksheet.Cells[12, 3] = " "; worksheet.Cells[12, 4] = " "; worksheet.Cells[12, 5] = " "; worksheet.Cells[12, 6] = " "; worksheet.Cells[12, 7] = " "; worksheet.Cells[13, 1] = " "; worksheet.Cells[13, 2] = " "; worksheet.Cells[13, 3] = " "; worksheet.Cells[13, 4] = " "; worksheet.Cells[13, 5] = " "; worksheet.Cells[13, 6] = " "; worksheet.Cells[13, 7] = " "; worksheet.Cells[14, 1] = "高值耗材使用醫(yī)生簽字"; worksheet.Cells[14, 5] = "手術(shù)護(hù)士"; worksheet.Cells[14, 6] = " "; worksheet.Cells[14, 7] = " "; worksheet.get_Range(worksheet.Cells[14, 6], worksheet.Cells[14, 7]).MergeCells = true; worksheet.get_Range(worksheet.Cells[14, 1], worksheet.Cells[14, 3]).MergeCells = true; worksheet.Cells[15, 1] = "收費人員(記賬人員)簽字"; worksheet.Cells[15, 5] = "收費價格"; worksheet.Cells[15, 6] = " "; worksheet.Cells[15, 7] = " "; worksheet.get_Range(worksheet.Cells[15, 6], worksheet.Cells[15, 7]).MergeCells = true; worksheet.get_Range(worksheet.Cells[15, 1], worksheet.Cells[15, 3]).MergeCells = true; worksheet.Cells[16, 1] = "科室負(fù)責(zé)人簽字"; worksheet.Cells[16, 3] = " "; worksheet.Cells[16, 4] = " "; worksheet.Cells[16, 5] = "設(shè)備采購簽字"; worksheet.Cells[16, 6] = " "; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, 10]).Text = ADD; worksheet.get_Range(worksheet.Cells[16, 1], worksheet.Cells[16, 2]).MergeCells = true; worksheet.get_Range(worksheet.Cells[16, 5], worksheet.Cells[16, 6]).MergeCells = true; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, 8]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; //worksheet.get_Range(worksheet.Cells[3, 1], worksheet.Cells[3, 8]).Font.Bold = true; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, 8]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, 8]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, 8]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, 8]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; worksheet.Cells[17, 1] = "高值耗材唯一性標(biāo)示"; //worksheet.get_Range(worksheet.Cells[17, 1], worksheet.Cells[17, 1]).VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; worksheet.get_Range(worksheet.Cells[17, 1], worksheet.Cells[27, 1]).MergeCells = true; worksheet.get_Range(worksheet.Cells[17, 2], worksheet.Cells[27, 7]).MergeCells = true; worksheet.get_Range(worksheet.Cells[17, 1], worksheet.Cells[27, 1]).WrapText = true;// worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[27, 7]).Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin; worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 7]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; if (savedialog.FileName != "") { try { workbook.Saved = true; workbook.SaveCopyAs(savedialog.FileName); } catch (Exception ex) { MessageBox.Show("導(dǎo)出文件時出錯,文件可能正被打開!..." + ex.Message, "系統(tǒng)提示 ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //GC.Collect();//強行銷毀 MessageBox.Show("數(shù)據(jù)導(dǎo)出成功! ", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); }
2.單元格樣式設(shè)置
Excel.Range r =mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]); r.NumberFormat="@"; //設(shè)置單元格格式為文本類型,文本類型可設(shè)置上下標(biāo) r.NumberForma="0.00_ "//設(shè)置單元格格式為數(shù)值類型,小數(shù)點后2位 r.NumberForma="¥#,##0.00;¥-#,##0.00"//設(shè)設(shè)置單元格格式為貨幣類型,小數(shù)點后2位 r.NumberForma=_"_ ¥*#,##0.00_;_ ¥*-#,##0.00_ ;_ ¥*""-""??_;_ @_ "//置單元格格式為會計專用類型,小數(shù)點后2位 r.NumberForma="yyyy-m-d"//設(shè)置單元格格式為日期類型 r.NumberForma="[$-F400]h:mm:ss AM/PM"//設(shè)置單元格格式為時間類型 r.NumberForma="0.00%"//設(shè)置單元格格式為百分比類型,小數(shù)點后2位 r.NumberForma="# ?/?"設(shè)置單元格格式為分?jǐn)?shù)類型,分母為一位數(shù) r.NumberForma="0.00E+00"//設(shè)置單元格格式為科學(xué)技術(shù)類型,小數(shù)位數(shù)為2 r.NumberForma="000000"//設(shè)置單元格格式為特殊類型 B、上下標(biāo)格式的控制; mySheet.get_Range(mySheet.Cells[i+3, DT.Columns.Count - 3],mySheet.Cells[i + 3, DT.Columns.Count -3]).get_Characters(a.Length+ 1,b.Length).Font.Subscript =true;//控制輸出樣式為下標(biāo) mySheet.get_Range(mySheet.Cells[i+3, DT.Columns.Count - 3],mySheet.Cells[i + 3, DT.Columns.Count-3]).get_Characters(a.Length + b.Length+ 1, c.Length).Font.Superscript =true; //控制輸出樣式為上標(biāo) C、單元格水平垂直對齊方式; //單元格水平,垂直居中 r.HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter; r.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter; 上面代碼中,枚舉XLHAlign的值還有: // 右對齊 xlHAlignRight, // 左對齊. xlHAlignLeft, // 兩端對齊. xlHAlignJustify, // 分散對齊(縮進(jìn)) xlHAlignDistributed, // 居中對齊 xlHAlignCenter, // 依照數(shù)據(jù)類型對齊,常規(guī) xlHAlignGeneral, // 填充 xlHAlignFill, // 跨列對齊. xlHAlignCenterAcrossSelection=7, 枚舉XLVAlign的值還有: // 靠上對齊 xlVAlignTop, //兩端對齊. xlVAlignJustify=-4130, //分散對齊. xlVAlignDistributed, //居中對齊. xlVAlignCenter, //靠下對齊. xlVAlignBottom=-4107, D、 單元格邊框設(shè)置; //設(shè)置邊框 Excel.Range r =mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]); r.Borders.LineStyle=Excel.XlLineStyle.xlContinuous; 枚舉XlLineStyle中還有下面線形: //沒邊框線 xlLineStyleNone, //雙線. xlDouble, //點狀線. xlDot, //虛線. xlDash, //連續(xù)線. xlContinuous, //點線交互型 xlDashDot, //兩點一線型 xlDashDotDot, //斜線. xlSlantDashDot, E、單元格合并 用get_Range方法獲取要合并的單元格,再設(shè)置MergeCells屬性的值進(jìn)行合并。 代碼: //合并單元格 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,4]).MergeCells =true; F、字體設(shè)置 先用get_Range方法選中要設(shè)置字體的某個單元格或者或者直接用get_Characters方法直接選中要設(shè)置的字符進(jìn)行設(shè)置; 代碼: //加粗字體 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Bold =true; //設(shè)置字體大小 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Size=16; //設(shè)置字體的顏色 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.ColorIndex = 3; //設(shè)置字體 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Name ="隸書"; //設(shè)置成斜體 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Italic =true; //設(shè)置下劃線 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Underline =true; G、凍結(jié)行列 用get_Range方法獲取單元格,再設(shè)置其Freezepanes屬性為true,就把該單元格右上方的行和列都凍結(jié)了,取消凍結(jié)將其值設(shè)為false即可。 //凍結(jié)行列 myExcel.get_Range(myExcel.Cells[3,1],myExcel.Cells[3,1]).Activate(); myExcel.ActiveWindow.FreezePanes=true; H、 公式輸入欄的隱藏 //設(shè)置是否顯示Excel公式輸入欄,默認(rèn)為true myExcel.DisplayFormulaBar=false; I、 列標(biāo)題與行標(biāo)題的隱藏 //設(shè)置是否顯示行和列的標(biāo)題,默認(rèn)為true myExcel.ActiveWindow.DisplayHeadings=false; J、網(wǎng)格的隱藏 //設(shè)置是否顯示網(wǎng)格,默認(rèn)為true myExcel.ActiveWindow.DisplayGridlines=false; K、 水平、垂直滾動條的隱藏 //設(shè)置是否顯示水平滾動條 myExcel.ActiveWindow.DisplayHorizontalScrollBar=false; //設(shè)置是否顯示垂直滾動條 myExcel.ActiveWindow.DisplayVerticalScrollBar=false; L、頁的隱藏Sheet //設(shè)置是否顯示Sheet頁 myExcel.ActiveWindow.DisplayWorkbookTabs=false; M、 電子表格外觀控制: Sheet.DisplayToolbar= false;//是否顯示工具欄默認(rèn)值為 true Sheet.DisplayOfficeLogo= false;// 取消顯示Office圖標(biāo) Sheet.DisplayColumnHeadings= false;// 是否顯示列標(biāo)題,默認(rèn)是true Sheet.DisplayRowHeadings= false;// 是否顯示行標(biāo)題,默認(rèn)是true Sheet.DisplayHorizontalScrollBar= false;// 是否顯示水平滾動條,默認(rèn)為true Sheet.DisplayVerticalScrollBar= false;// 是否顯示垂直滾動條,默認(rèn)為true Sheet.DisplayGridlines= false;// 電子表格是否顯示網(wǎng)格,默認(rèn)為true for (int i = 1; i < DT.Columns.Count- 2; i += 2) { Sheet.get_Range(Sheet.Rows.Cells[i,1],Sheet.Rows.Cells[i, DT.Columns.Count - 3]).Interior.set_ColorIndex(2); //設(shè)置行的顏色 } worksheet.Cells[1, 1]= "Excel單元格賦值";//Excel單元格賦值 range.Font.Size = 15; //設(shè)置字體大小 range.Font.Underline=true; //設(shè)置字體是否有下劃線 range.Font.Name="黑體";設(shè)置字體的種類 range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //設(shè)置字體在單元格內(nèi)的對其方式 range.ColumnWidth=15; //設(shè)置單元格的寬度 range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();//設(shè)置單元格的背景色 range.Borders.LineStyle=1; //設(shè)置單元格邊框的粗細(xì) range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb());//給單元格加邊框 range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle=Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone;//設(shè)置單元格上邊框為無邊框 range.EntireColumn.AutoFit(); //自動調(diào)整列寬 Range.HorizontalAlignment= xlCenter; // 文本水平居中方式 Range.VerticalAlignment= xlCenter //文本垂直居中方式 Range.WrapText=true; //文本自動換行 Range.Interior.ColorIndex=39; //填充顏色為淡紫色 Range.Font.Color=clBlue; //字體顏色 xlsApp.DisplayAlerts=false; //保存Excel的時候,不彈出是否保存的窗口直接進(jìn)行保存 向Excel中填充數(shù)據(jù),并保存為臨時文件 Excel.ApplicationmyExcel =newExcel.Application(); //打開模板文件 myExcel.Application.Workbooks.Open(mode.FullName,missing,missing,missing, missing, missing, missing, missing, missing,missing, missing,missing,missing, missing, missing); //選中有數(shù)據(jù)的Cells Excel.WorkbookmyBook = myExcel.Workbooks[1]; Excel.WorksheetmySheet = (Excel.Worksheet)myBook.Worksheets[1]; Excel.Ranger = mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]); r.Select(); //不單獨顯示Excel,最后在IE中顯示 myExcel.Visible=false; //第一行為報表的標(biāo)題 myExcel.Cells[1,1]= "用模板導(dǎo)出的報表"; //逐行寫入數(shù)據(jù),數(shù)組中第一行為報表的列標(biāo)題 for (int i = 0; i <DT.Columns.Count - 3; i++) { myExcel.Cells[2,1+ i] =DT.Columns[i].Caption; ; } //在當(dāng)前目錄下指定一個臨時文件 string FileName =Server.MapPath("~")+"""Temp.xls"; if (File.Exists(FileName)) { File.Delete(FileName); } myExcel.Save(FileName); mySheet.Cells.Clear(); //設(shè)置不出現(xiàn)保存提示框 myBook.Saved=true; myExcel.Application.Workbooks.Close();
框架4.0之上的導(dǎo)出 引用 Aspose.cell
public void importExcel(DataTable dt, string fileName, string filePath) { int posStart = 2;//報表內(nèi)容起始 //設(shè)置字體樣式 Style style1 = new Style(); style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style1.VerticalAlignment = TextAlignmentType.Left; style1.Font.Name = "宋體"; style1.Font.IsBold = true;//設(shè)置粗體 style1.Font.Size = 12;//設(shè)置字體大小 Style style2 = new Style(); style2.HorizontalAlignment = TextAlignmentType.Center; style2.Font.Size = 10; Workbook wb = new Workbook(); Worksheet ws = wb.Worksheets[0]; Cells cell = ws.Cells; int colCount = dt.Columns.Count; int rowCount = dt.Rows.Count; //合并第一行單元格,顯示標(biāo)題 Range range = cell.CreateRange(0, 0, 1, colCount); range.Merge(); cell["A1"].PutValue(fileName); //標(biāo)題 cell.SetRowHeight(0, 20);//設(shè)置行高 //給單元格關(guān)聯(lián)樣式 cell["A1"].SetStyle(style1); //報表名字 樣式 //設(shè)置Execl列名 for (int i = 0; i < colCount; i++) { cell[1, i].PutValue(dt.Columns[i].ColumnName); //cell[1, i].SetStyle(style2); } //設(shè)置單元格內(nèi)容 for (int i = 0; i < rowCount; i++) { for (int j = 0; j < colCount; j++) { cell[i + posStart, j].PutValue((dt.Rows[i][j] + "").Trim()); //cell[i + posStart, j].SetStyle(style2); } } //設(shè)置列寬 //for (int i = 1; i < dt.Columns.Count; i++) //{ // cell.SetColumnWidthPixel(i - 1, int.Parse(dataGridView1.Columns[i].Width.ToString())); //} //保存excel表格 wb.Save(filePath); }
原文地址:http://www.rzrgm.cn/hanke123/p/6372525.html


浙公網(wǎng)安備 33010602011771號