C#創建Excel表格(樣式設置)


  首先 引入 Excel的命名空間

using Microsoft.Office.Interop.Excel;

       創建Excel需要   創建Excel   ' 運行環境' Application 類

 

             Excel中  由 ‘工作薄’    Workbook     和  '頁'  Worksheet  兩個類組成 

 

   層級 依賴 關系為

       Application

         Workbook

          Worksheet

 

 //創建一個Excel運行環境
Application app = new Application();
//
app.Visible = false;
//創建Excel中的工作薄
Workbook wb = (Workbook)app.Workbooks.Add(Missing.Value);
//創建Excel工作薄中的 頁 sheet
Worksheet sheet =(Worksheet ) wb.ActiveSheet;


          sheet下   由 單元格組成 cells       sheet.cells[RowIndex,ColumnIndex]=    根據行號和列號來定位單元格  賦值

 

     設置表頭   給 第二列賦值 第一列還有用

View Code
sheet.Cells[2, 1] = "航運公司";//也可以這樣賦值
sheet.Cells[2, 2] = "船名";
sheet.Cells[2, 3] = "航次";
sheet.Cells[2, 4] = "流向";
sheet.Cells[2, 5] = "裝港";
sheet.Cells[2, 6] = "供貨方";
sheet.Cells[2, 7] = "性質";
sheet.Cells[2, 8] = "煤質";
sheet.Cells[2, 9] = "貿易性質";
sheet.Cells[2, 10] = "煤種";
sheet.Cells[2, 11] = "狀態";
sheet.Cells[2, 12] = "錨地時間";
sheet.Cells[2, 13] = "手續辦理時間";
sheet.Cells[2, 14] = "靠泊時間";
sheet.Cells[2, 15] = "載重";
sheet.Cells[2, 16] = "離港時間";
sheet.Cells[2, 17] = "在港時間";
sheet.Cells[2, 18] = "錨地時間";
sheet.Cells[2, 19] = "靠御時間";
sheet.Cells[2, 20] = "離港時間";
sheet.Cells[2, 21] = "御港時間";
sheet.Cells[2, 22] = "預估滯期費";
sheet.Cells[2, 23] = "卸港效率";

 

         給第一列賦值

 //這個 列的Index無所謂  只要在 想要合並的單元格列(如 合並 12-22 列)  Index的 范圍內就行
sheet.Cells[1, 12] = "裝港";
sheet.Cells[1, 22] = "卸港";


      合並單元格 (表頭); 這時要用到  Range   可以理解為 域 (區域)  我們設置樣式  是都是設置的Range

      

View Code
//合並 單元格 設置表頭
sheet.get_Range("A1", "A2").Merge(sheet.get_Range("A1", "A2").MergeCells);

sheet.get_Range("B1", "B2").Merge(sheet.get_Range("B1", "B2").MergeCells);
sheet.get_Range("C1", "C2").Merge(sheet.get_Range("C1", "C2").MergeCells);
sheet.get_Range("D1", "D2").Merge(sheet.get_Range("D1", "D2").MergeCells);
sheet.get_Range("E1", "E2").Merge(sheet.get_Range("E1", "E2").MergeCells);
sheet.get_Range("F1", "F2").Merge(sheet.get_Range("F1", "F2").MergeCells);
sheet.get_Range("G1", "G2").Merge(sheet.get_Range("G1", "G2").MergeCells);
sheet.get_Range("H1", "H2").Merge(sheet.get_Range("H1", "H2").MergeCells);
sheet.get_Range("I1", "I2").Merge(sheet.get_Range("I1", "I2").MergeCells);
sheet.get_Range("J1", "J2").Merge(sheet.get_Range("J1", "J2").MergeCells);
sheet.get_Range("K1", "K2").Merge(sheet.get_Range("K1", "K2").MergeCells);

sheet.get_Range("L1", "Q1").Merge(sheet.get_Range("L1", "Q1").MergeCells);
sheet.get_Range("R1", "W1").Merge(sheet.get_Range("R1", "W1").MergeCells);

 

 

 

   //得到  Range 范圍   域對象             Range range = sheet.get_Range("A1", "W69");  從A1到 W69 的區域  A是表頭編號 后面的數組時   列的Index

   設置  樣式

View Code
            //得到  Range 范圍   域對象
Range range = sheet.get_Range("A1", "W69");
//設置 該range內的 樣式 顏色 邊框

Console.WriteLine("該域內有"+range.Rows.Count.ToString ()+"行數據");

//設置Excel表格的 列寬
sheet.get_Range("L1" , "L69" ).ColumnWidth = 30;

sheet.get_Range("P1", "Q69").ColumnWidth = 30;

sheet.get_Range("R1", "U69").ColumnWidth = 30;

//設置 域 Range 的顏色 從 A1到W1
sheet.get_Range("A1", "W1").Interior.ColorIndex = 15;
sheet.get_Range("A2", "W2").Interior.ColorIndex = 15;

//設置 某個域 range 被選中
//sheet.get_Range("A1", "W1").Select();
//sheet.get_Range("A2", "W2").Select();



sheet.get_Range("C3", "W3").Select();

//左右 設置 選中域內的 Excel單元格從C 到W 是活動的 前面的A B 為固定的
//但是 上下 方向 表頭(這里表頭合並兩行 )沒有固定 選C3 到W3(表示從C的第三行開始 為 活動 的 上面兩行為固定的)
app.ActiveWindow.FreezePanes = true;




//設置 某個域range內 單元格里的字體顏色
sheet.get_Range("A1", "W2").Font.Color = -16744448;//(搜索Excel顏色對照表)
sheet.get_Range("A3", "W24").Font.Color = -16776961;
//文字 居中
range.HorizontalAlignment = XlHAlign.xlHAlignCenter;
range.Font.Size = 10;
range.Borders.LineStyle = 1;


//固定 列的原有 格式
//range.EntireColumn.AutoFit();


//設置邊框
range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
range.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = XlBorderWeight.xlMedium;
range.WrapText = true;


  賦值:

        

   完整代碼:

  

View Code
            //創建一個Excel運行環境
Application app = new Application();
//
app.Visible = false;
//創建Excel中的工作薄
Workbook wb = (Workbook)app.Workbooks.Add(Missing.Value);
//創建Excel工作薄中的 頁 sheet
Worksheet sheet =(Worksheet ) wb.ActiveSheet;


sheet.Cells[2, 1] = "航運公司";//也可以這樣賦值
sheet.Cells[2, 2] = "船名";
sheet.Cells[2, 3] = "航次";
sheet.Cells[2, 4] = "流向";
sheet.Cells[2, 5] = "裝港";
sheet.Cells[2, 6] = "供貨方";
sheet.Cells[2, 7] = "性質";
sheet.Cells[2, 8] = "煤質";
sheet.Cells[2, 9] = "貿易性質";
sheet.Cells[2, 10] = "煤種";
sheet.Cells[2, 11] = "狀態";
sheet.Cells[2, 12] = "錨地時間";
sheet.Cells[2, 13] = "手續辦理時間";
sheet.Cells[2, 14] = "靠泊時間";
sheet.Cells[2, 15] = "載重";
sheet.Cells[2, 16] = "離港時間";
sheet.Cells[2, 17] = "在港時間";
sheet.Cells[2, 18] = "錨地時間";
sheet.Cells[2, 19] = "靠御時間";
sheet.Cells[2, 20] = "離港時間";
sheet.Cells[2, 21] = "御港時間";
sheet.Cells[2, 22] = "預估滯期費";
sheet.Cells[2, 23] = "卸港效率";

//這個 列的Index無所謂 只要在 想要合並的單元格列(如 合並 12-22 列) Index的 范圍內就行
sheet.Cells[1, 12] = "裝港";
sheet.Cells[1, 22] = "卸港";
//合並 單元格 設置表頭
sheet.get_Range("A1", "A2").Merge(sheet.get_Range("A1", "A2").MergeCells);

sheet.get_Range("B1", "B2").Merge(sheet.get_Range("B1", "B2").MergeCells);
sheet.get_Range("C1", "C2").Merge(sheet.get_Range("C1", "C2").MergeCells);
sheet.get_Range("D1", "D2").Merge(sheet.get_Range("D1", "D2").MergeCells);
sheet.get_Range("E1", "E2").Merge(sheet.get_Range("E1", "E2").MergeCells);
sheet.get_Range("F1", "F2").Merge(sheet.get_Range("F1", "F2").MergeCells);
sheet.get_Range("G1", "G2").Merge(sheet.get_Range("G1", "G2").MergeCells);
sheet.get_Range("H1", "H2").Merge(sheet.get_Range("H1", "H2").MergeCells);
sheet.get_Range("I1", "I2").Merge(sheet.get_Range("I1", "I2").MergeCells);
sheet.get_Range("J1", "J2").Merge(sheet.get_Range("J1", "J2").MergeCells);
sheet.get_Range("K1", "K2").Merge(sheet.get_Range("K1", "K2").MergeCells);

sheet.get_Range("L1", "Q1").Merge(sheet.get_Range("L1", "Q1").MergeCells);
sheet.get_Range("R1", "W1").Merge(sheet.get_Range("R1", "W1").MergeCells);


//得到 Range 范圍 域對象
Range range = sheet.get_Range("A1", "W69");
//設置 該range內的 樣式 顏色 邊框

Console.WriteLine("該域內有"+range.Rows.Count.ToString ()+"行數據");

//設置Excel表格的 列寬
sheet.get_Range("L1" , "L69" ).ColumnWidth = 30;

sheet.get_Range("P1", "Q69").ColumnWidth = 30;

sheet.get_Range("R1", "U69").ColumnWidth = 30;

//設置 域 Range 的顏色 從 A1到W1
sheet.get_Range("A1", "W1").Interior.ColorIndex = 15;
sheet.get_Range("A2", "W2").Interior.ColorIndex = 15;

//設置 某個域 range 被選中
//sheet.get_Range("A1", "W1").Select();
//sheet.get_Range("A2", "W2").Select();



sheet.get_Range("C3", "W3").Select();

//左右 設置 選中域內的 Excel單元格從C 到W 是活動的 前面的A B 為固定的
//但是 上下 方向 表頭(這里表頭合並兩行 )沒有固定 選C3 到W3(表示從C的第三行開始 為 活動 的 上面兩行為固定的)
app.ActiveWindow.FreezePanes = true;




//設置 某個域range內 單元格里的字體顏色
sheet.get_Range("A1", "W2").Font.Color = -16744448;//(搜索Excel顏色對照表)
sheet.get_Range("A3", "W24").Font.Color = -16776961;
//文字 居中
range.HorizontalAlignment = XlHAlign.xlHAlignCenter;
range.Font.Size = 10;
range.Borders.LineStyle = 1;


//固定 列的原有 格式
//range.EntireColumn.AutoFit();


//設置邊框
range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
range.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = XlBorderWeight.xlMedium;
range.WrapText = true;


//賦值
for (int i = 0; i <22; i++)
{

sheet.Cells[i + 3, 1] = i.ToString();
sheet.Cells[i + 3, 2] = i.ToString();
sheet.Cells[i + 3, 3] = i.ToString();
sheet.Cells[i + 3, 4] = i.ToString();
sheet.Cells[i + 3, 5] = i.ToString();
sheet.Cells[i + 3, 6] = i.ToString();
sheet.Cells[i + 3, 7] = i.ToString();
sheet.Cells[i + 3, 8] = i.ToString();
sheet.Cells[i + 3, 9] = i.ToString();
sheet.Cells[i + 3, 10] = i.ToString();
sheet.Cells[i + 3, 11] = i.ToString();
}

wb.Saved = true;


//保存工作薄
app.ActiveWorkbook.SaveCopyAs(@"C:\Users\ITCA\Desktop\新建Excel.xlsx");
 finally 
{
#region 釋放內存
wb.Close(null, null, null);
app.Workbooks.Close();
app.Quit();
Marshal.ReleaseComObject((object)app);
Marshal.ReleaseComObject((object)wb);
Marshal.ReleaseComObject((object)sheet);
GC.Collect();
#endregion

}




 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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