1.例子導出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 = "導出數據到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,無法創建excel對象!", "系統提示 ", 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 = "盤點錄入明細表 時間:" + 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] = "手術名稱"; worksheet.Cells[5, 1] = "使用部位"; worksheet.Cells[5, 2] = " "; worksheet.Cells[5, 3] = "手術日期"; worksheet.Cells[5, 4] = " "; worksheet.Cells[5, 5] = "醫保類型"; 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] = "生產廠家"; 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] = "生產日期"; 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] = "聯系電話"; worksheet.Cells[8, 7] = " "; worksheet.Cells[9, 1] = "產品名稱"; worksheet.Cells[9, 2] = "規格型號"; worksheet.Cells[9, 3] = "產品批號"; worksheet.Cells[9, 4] = "單價"; worksheet.Cells[9, 5] = "數量"; 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] = "高值耗材使用醫生簽字"; worksheet.Cells[14, 5] = "手術護士"; 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] = "科室負責人簽字"; worksheet.Cells[16, 3] = " "; worksheet.Cells[16, 4] = " "; worksheet.Cells[16, 5] = "設備采購簽字"; 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] = "高值耗材唯一性標示"; //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("導出文件時出錯,文件可能正被打開!..." + ex.Message, "系統提示 ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //GC.Collect();//強行銷毀 MessageBox.Show("數據導出成功! ", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); }
2.單元格樣式設置
Excel.Range r =mySheet.get_Range(mySheet.Cells[1,1],mySheet.Cells[DT.Rows.Count + 2,DT.Columns.Count - 3]); r.NumberFormat="@"; //設置單元格格式為文本類型,文本類型可設置上下標 r.NumberForma="0.00_ "//設置單元格格式為數值類型,小數點后2位 r.NumberForma="¥#,##0.00;¥-#,##0.00"//設設置單元格格式為貨幣類型,小數點后2位 r.NumberForma=_"_ ¥*#,##0.00_;_ ¥*-#,##0.00_ ;_ ¥*""-""??_;_ @_ "//置單元格格式為會計專用類型,小數點后2位 r.NumberForma="yyyy-m-d"//設置單元格格式為日期類型 r.NumberForma="[$-F400]h:mm:ss AM/PM"//設置單元格格式為時間類型 r.NumberForma="0.00%"//設置單元格格式為百分比類型,小數點后2位 r.NumberForma="# ?/?"設置單元格格式為分數類型,分母為一位數 r.NumberForma="0.00E+00"//設置單元格格式為科學技術類型,小數位數為2 r.NumberForma="000000"//設置單元格格式為特殊類型 B、上下標格式的控制; 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;//控制輸出樣式為下標 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; //控制輸出樣式為上標 C、單元格水平垂直對齊方式; //單元格水平,垂直居中 r.HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter; r.VerticalAlignment=Excel.XlVAlign.xlVAlignCenter; 上面代碼中,枚舉XLHAlign的值還有: // 右對齊 xlHAlignRight, // 左對齊. xlHAlignLeft, // 兩端對齊. xlHAlignJustify, // 分散對齊(縮進) xlHAlignDistributed, // 居中對齊 xlHAlignCenter, // 依照數據類型對齊,常規 xlHAlignGeneral, // 填充 xlHAlignFill, // 跨列對齊. xlHAlignCenterAcrossSelection=7, 枚舉XLVAlign的值還有: // 靠上對齊 xlVAlignTop, //兩端對齊. xlVAlignJustify=-4130, //分散對齊. xlVAlignDistributed, //居中對齊. xlVAlignCenter, //靠下對齊. xlVAlignBottom=-4107, D、 單元格邊框設置; //設置邊框 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, //連續線. xlContinuous, //點線交互型 xlDashDot, //兩點一線型 xlDashDotDot, //斜線. xlSlantDashDot, E、單元格合並 用get_Range方法獲取要合並的單元格,再設置MergeCells屬性的值進行合並。 代碼: //合並單元格 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,4]).MergeCells =true; F、字體設置 先用get_Range方法選中要設置字體的某個單元格或者或者直接用get_Characters方法直接選中要設置的字符進行設置; 代碼: //加粗字體 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Bold =true; //設置字體大小 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Size=16; //設置字體的顏色 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.ColorIndex = 3; //設置字體 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Name ="隸書"; //設置成斜體 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Italic =true; //設置下划線 myExcel.get_Range(myExcel.Cells[1,1],myExcel.Cells[1,1]).Font.Underline =true; G、凍結行列 用get_Range方法獲取單元格,再設置其Freezepanes屬性為true,就把該單元格右上方的行和列都凍結了,取消凍結將其值設為false即可。 //凍結行列 myExcel.get_Range(myExcel.Cells[3,1],myExcel.Cells[3,1]).Activate(); myExcel.ActiveWindow.FreezePanes=true; H、 公式輸入欄的隱藏 //設置是否顯示Excel公式輸入欄,默認為true myExcel.DisplayFormulaBar=false; I、 列標題與行標題的隱藏 //設置是否顯示行和列的標題,默認為true myExcel.ActiveWindow.DisplayHeadings=false; J、網格的隱藏 //設置是否顯示網格,默認為true myExcel.ActiveWindow.DisplayGridlines=false; K、 水平、垂直滾動條的隱藏 //設置是否顯示水平滾動條 myExcel.ActiveWindow.DisplayHorizontalScrollBar=false; //設置是否顯示垂直滾動條 myExcel.ActiveWindow.DisplayVerticalScrollBar=false; L、頁的隱藏Sheet //設置是否顯示Sheet頁 myExcel.ActiveWindow.DisplayWorkbookTabs=false; M、 電子表格外觀控制: Sheet.DisplayToolbar= false;//是否顯示工具欄默認值為 true Sheet.DisplayOfficeLogo= false;// 取消顯示Office圖標 Sheet.DisplayColumnHeadings= false;// 是否顯示列標題,默認是true Sheet.DisplayRowHeadings= false;// 是否顯示行標題,默認是true Sheet.DisplayHorizontalScrollBar= false;// 是否顯示水平滾動條,默認為true Sheet.DisplayVerticalScrollBar= false;// 是否顯示垂直滾動條,默認為true Sheet.DisplayGridlines= false;// 電子表格是否顯示網格,默認為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); //設置行的顏色 } worksheet.Cells[1, 1]= "Excel單元格賦值";//Excel單元格賦值 range.Font.Size = 15; //設置字體大小 range.Font.Underline=true; //設置字體是否有下划線 range.Font.Name="黑體";設置字體的種類 range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //設置字體在單元格內的對其方式 range.ColumnWidth=15; //設置單元格的寬度 range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();//設置單元格的背景色 range.Borders.LineStyle=1; //設置單元格邊框的粗細 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;//設置單元格上邊框為無邊框 range.EntireColumn.AutoFit(); //自動調整列寬 Range.HorizontalAlignment= xlCenter; // 文本水平居中方式 Range.VerticalAlignment= xlCenter //文本垂直居中方式 Range.WrapText=true; //文本自動換行 Range.Interior.ColorIndex=39; //填充顏色為淡紫色 Range.Font.Color=clBlue; //字體顏色 xlsApp.DisplayAlerts=false; //保存Excel的時候,不彈出是否保存的窗口直接進行保存 向Excel中填充數據,並保存為臨時文件 Excel.ApplicationmyExcel =newExcel.Application(); //打開模板文件 myExcel.Application.Workbooks.Open(mode.FullName,missing,missing,missing, missing, missing, missing, missing, missing,missing, missing,missing,missing, missing, missing); //選中有數據的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; //第一行為報表的標題 myExcel.Cells[1,1]= "用模板導出的報表"; //逐行寫入數據,數組中第一行為報表的列標題 for (int i = 0; i <DT.Columns.Count - 3; i++) { myExcel.Cells[2,1+ i] =DT.Columns[i].Caption; ; } //在當前目錄下指定一個臨時文件 string FileName =Server.MapPath("~")+"""Temp.xls"; if (File.Exists(FileName)) { File.Delete(FileName); } myExcel.Save(FileName); mySheet.Cells.Clear(); //設置不出現保存提示框 myBook.Saved=true; myExcel.Application.Workbooks.Close();
框架4.0之上的導出 引用 Aspose.cell
public void importExcel(DataTable dt, string fileName, string filePath) { int posStart = 2;//報表內容起始 //設置字體樣式 Style style1 = new Style(); style1.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style1.VerticalAlignment = TextAlignmentType.Left; style1.Font.Name = "宋體"; style1.Font.IsBold = true;//設置粗體 style1.Font.Size = 12;//設置字體大小 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; //合並第一行單元格,顯示標題 Range range = cell.CreateRange(0, 0, 1, colCount); range.Merge(); cell["A1"].PutValue(fileName); //標題 cell.SetRowHeight(0, 20);//設置行高 //給單元格關聯樣式 cell["A1"].SetStyle(style1); //報表名字 樣式 //設置Execl列名 for (int i = 0; i < colCount; i++) { cell[1, i].PutValue(dt.Columns[i].ColumnName); //cell[1, i].SetStyle(style2); } //設置單元格內容 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); } } //設置列寬 //for (int i = 1; i < dt.Columns.Count; i++) //{ // cell.SetColumnWidthPixel(i - 1, int.Parse(dataGridView1.Columns[i].Width.ToString())); //} //保存excel表格 wb.Save(filePath); }