C# worksheet設置Excel樣式


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);

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM