object filePath = @"C:\" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.ToLongTimeString().Replace(":", "") + ".xlsx"; //文件保存路徑 public void GeneExcel(DataSet ds) { Excel.ApplicationClass xlApp = new Excel.ApplicationClass(); Workbooks workbooks = xlApp.Workbooks; Workbook workBook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet workSheet = (Worksheet)workBook.Worksheets[1];//取得sheet1 //打開一個WorkBook //Workbooks workbooks = xlApp.Workbooks; //Workbook workBook = xlApp.Workbooks.Open(filePath.ToString(), // Type.Missing, Type.Missing, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); ////獲得WorkSheet對象 //Worksheet workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1); try { workSheet.Name = "表單一"; workSheet.Cells[1, 1] = "單元名稱"; workSheet.Cells[1, 2] = "指標及其描述、特徵值和權重"; workSheet.Cells[1, 23] = "屬性"; workSheet.Cells[2, 2] = "D"; workSheet.Cells[2, 5] = "R"; workSheet.Cells[2, 8] = "A"; workSheet.Cells[2, 11] = "S"; workSheet.Cells[2, 14] = "T"; workSheet.Cells[2, 17] = "I"; workSheet.Cells[2, 20] = "C"; workSheet.Cells[2, 23] = "結果"; workSheet.Cells[2, 24] = "等級"; workSheet.Cells[3, 2] = "描述"; workSheet.Cells[3, 3] = "特徵值"; workSheet.Cells[3, 4] = "權重"; workSheet.Cells[3, 5] = "描述"; workSheet.Cells[3, 6] = "特徵值"; workSheet.Cells[3, 7] = "權重"; workSheet.Cells[3, 8] = "描述"; workSheet.Cells[3, 9] = "特徵值"; workSheet.Cells[3, 10] = "權重"; workSheet.Cells[3, 11] = "描述"; workSheet.Cells[3, 12] = "特徵值"; workSheet.Cells[3, 13] = "權重"; workSheet.Cells[3, 14] = "描述"; workSheet.Cells[3, 15] = "特徵值"; workSheet.Cells[3, 16] = "權重"; workSheet.Cells[3, 17] = "描述"; workSheet.Cells[3, 18] = "特徵值"; workSheet.Cells[3, 19] = "權重"; workSheet.Cells[3, 20] = "描述"; workSheet.Cells[3, 21] = "特徵值"; workSheet.Cells[3, 22] = "權重"; workSheet.get_Range("A1", "A3").MergeCells = true; //合併單元格 Range rg1 = workSheet.get_Range(workSheet.Cells[1, 2], workSheet.Cells[1, 22]); //range.ClearContents(); //先把Range內容清除,合併纔不會出錯 rg1.MergeCells = true; rg1.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; rg1.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; workSheet.get_Range(workSheet.Cells[1, 23], workSheet.Cells[1, 24]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 2], workSheet.Cells[2, 4]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 5], workSheet.Cells[2, 7]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 8], workSheet.Cells[2, 10]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 11], workSheet.Cells[2, 13]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 14], workSheet.Cells[2, 16]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 17], workSheet.Cells[2, 19]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 20], workSheet.Cells[2, 22]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 23], workSheet.Cells[3, 23]).MergeCells = true; workSheet.get_Range(workSheet.Cells[2, 24], workSheet.Cells[3, 24]).MergeCells = true; /*往Excel格式表格中寫入數據*/ int waterdataRows = ds.Tables[0].Rows.Count; int waterdataCols = ds.Tables[0].Columns.Count; for (int i = 1; i <= waterdataRows; i++) { workSheet.Cells[i + 3, 1] = ds.Tables[0].Rows[i - 1].ItemArray.GetValue(0); for (int j = 1; j <= 7; j++) { workSheet.Cells[i + 3, 3 * j] = ds.Tables[0].Rows[i - 1].ItemArray.GetValue(j); } workSheet.Cells[i + 3, 23] = ds.Tables[0].Rows[i - 1].ItemArray.GetValue(1); workSheet.Cells[i + 3, 24] = ds.Tables[0].Rows[i - 1].ItemArray.GetValue(3); } //插入空行 //Range rgInsert = (Excel.Range)workSheet.Rows[6, Type.Missing]; //rgInsert.Insert(Excel.XlDirection.xlDown, Type.Missing); //rgInsert.Copy(); //複製 //rgInsert.Delete(); //刪除 //range1.Copy(rgStyle); //自動填充(如星期一到星期五) //Excel.Range rng = workSheet.get_Range("B4", Type.Missing); //rng.Value2 = "星期一 "; //rng.AutoFill(workSheet.get_Range("B4", "B9"), // Excel.XlAutoFillType.xlFillWeekdays); Excel.Range rng = workSheet.get_Range("C4", Type.Missing); rng.Value2 = "一月"; rng.AutoFill(workSheet.get_Range("C4", "C9"), Excel.XlAutoFillType.xlFillMonths); //rng.Value2 = "1"; //rng.AutoFill(workSheet.get_Range("D4", "D9"), // Excel.XlAutoFillType.xlFillSeries); //Excel.Range rangePic = workSheet.get_Range("A10", "A11"); //rangePic.Select(); //workSheet.Shapes.AddPicture(@"C:\6.jpg", Microsoft.Office.Core.MsoTriState.msoFalse, //Microsoft.Office.Core.MsoTriState.msoTrue, Convert.ToSingle(rangePic.Left), Convert.ToSingle(rangePic.Top), 10, 10); #region 應用樣式 Excel.Range rgStyle = workSheet.get_Range("O10", Type.Missing); rgStyle.Formula = "=SUM(O4:O9)"; rgStyle.Calculate(); //rgStyle.Interior.ColorIndex = ColorIndex.紅色;//15背景色 //rgStyle.Font.Color = ColorIndex.白色; //無效 //rgStyle.Font.Bold = true; //rgStyle.Font.Size = 9; Excel.Style style; //style = workBook.Styles["NewStyle"]; style = workBook.Styles.Add("NewStyle", Type.Missing); style.Font.Name = "Verdana"; style.Font.Size = 12; style.Font.Color = 255;//前景色 style.Interior.Color = (200 << 16) | (200 << 8) | 200; //背景色 //rgStyle.Interior.ColorIndex = ColorIndex.紅色;//15背景色 style.Interior.Pattern = Excel.XlPattern.xlPatternSolid; rgStyle.Value2 = "'Style Test"; rgStyle.Style = "NewStyle"; rgStyle.Columns.AutoFit(); #endregion #region 行高、列寬 //Range rgHeight = workSheet.get_Range("C9", Type.Missing); //rgHeight.Value = "sdfsdfsdf"; //rgHeight.RowHeight = 100; //range.EntireColumn.AutoFit(); Range rgWidth = workSheet.get_Range("C9", Type.Missing); rgWidth.Value = "sdfsfscvfffffffffffdf"; //rgWidth.ColumnWidth = 20; rgWidth.EntireColumn.AutoFit(); //自動根據內容設定寬度 #endregion //sheet.Visible = Excel.XlSheetVisibility.xlSheetHidden; //隱藏工做表 #region 保存Excel workBook.Saved = true; //workBook.Save(); //workBook.SaveCopyAs(filePath); workBook.SaveAs(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //workBook.SaveAs(filePath, Excel.XlFileFormat.xlXMLSpreadsheet, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //Excel.XlFileFormat.xlXMLSpreadsheet 生成多種格式文件 SaveAsFileFormat枚舉 #endregion #region 釋放Excel資源 System.Runtime.InteropServices.Marshal.ReleaseComObject(rg1); //釋放Range System.Runtime.InteropServices.Marshal.ReleaseComObject(rgStyle); System.Runtime.InteropServices.Marshal.ReleaseComObject(rgWidth); if (workSheet != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet); workSheet = null; } if (workBook != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook); workBook = null; } if (workbooks != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks); workbooks = null; } if (xlApp != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); xlApp = null; } workBook.Close(false, null, null); xlApp.Workbooks.Close(); xlApp.Quit(); //自動打開Excel,拋異常 GC.WaitForPendingFinalizers(); GC.Collect(); #endregion } catch (Exception ex) { } finally { } System.Diagnostics.Process.Start(filePath.ToString()); }
轉 http://www.cnblogs.com/gossip/archive/2011/10/22/2221465.htmlhtml