C#操作Excel全能幫助類:
1,Excel單元格邊框的線條的粗細(xì)枚舉
2,Excel單元格邊框枚舉
3,徹底關(guān)閉Excel的資源和進(jìn)程
4,打印預(yù)覽Excel文件
5,設(shè)置工作簿的名稱
6,設(shè)置指定單元格的內(nèi)容,可以指定格式
7,設(shè)置指定范圍的單元格格式
using Excel;
using System;
using System.Reflection;
namespace ExcelClass
{
public class ExcelBase
{
#region " Private Variable Definition "
private Application exlApp;
private _Workbook exlWorkBook;
private _Worksheet exlWorkSheet;
private int sheetNumber = 1;
#endregion
#region " Public Property and Constant Definition "
/// <summary>
/// Excel單元格邊框的線條的粗細(xì)枚舉
/// </summary>
public enum ExcelBorderWeight
{
/// <summary>
/// 極細(xì)的線條
/// </summary>
Hairline = Excel.XlBorderWeight.xlHairline,
/// <summary>
/// 中等的線條
/// </summary>
Medium = Excel.XlBorderWeight.xlMedium,
/// <summary>
/// 粗線條
/// </summary>
Thick = Excel.XlBorderWeight.xlThick,
/// <summary>
/// 細(xì)線條
/// </summary>
Thin = Excel.XlBorderWeight.xlThin
}
/// <summary>
/// Excel單元格邊框枚舉
/// </summary>
public enum ExcelBordersIndex
{
/// <summary>
/// 主對(duì)角線從
/// </summary>
DiagonalDown = Excel.XlBordersIndex.xlDiagonalDown,
/// <summary>
/// 輔對(duì)角線
/// </summary>
DiagonUp = Excel.XlBordersIndex.xlDiagonalUp,
/// <summary>
///底邊框
/// </summary>
EdgeBottom = Excel.XlBordersIndex.xlEdgeBottom,
/// <summary>
/// 左邊框
/// </summary>
EdgeLeft = Excel.XlBordersIndex.xlEdgeLeft,
/// <summary>
/// 右邊框
/// </summary>
EdgeRight = Excel.XlBordersIndex.xlEdgeRight,
/// <summary>
/// 頂邊框
/// </summary>
EdgeTop = Excel.XlBordersIndex.xlEdgeTop,
/// <summary>
/// 邊框內(nèi)水平橫線
/// </summary>
InsideHorizontal = Excel.XlBordersIndex.xlInsideHorizontal,
/// <summary>
/// 邊框內(nèi)垂直豎線
/// </summary>
InsideVertical = Excel.XlBordersIndex.xlInsideVertical
}
/// <summary>
/// Excel單元格的豎直方法對(duì)齊枚舉
/// </summary>
public enum ExcelVerticalAlignment
{
/// <summary>
/// 居中
/// </summary>
Center = Excel.Constants.xlCenter,
/// <summary>
/// 靠上
/// </summary>
Top = Excel.Constants.xlTop,
/// <summary>
/// 靠下
/// </summary>
Bottom = Excel.Constants.xlBottom,
/// <summary>
/// 兩端對(duì)齊
/// </summary>
Justify = Excel.Constants.xlJustify,
/// <summary>
/// 分散對(duì)齊
/// </summary>
Distributed = Excel.Constants.xlDistributed
};
/// <summary>
/// Excel 水平方向?qū)R枚舉
/// </summary>
public enum ExcelHorizontalAlignment
{
/// <summary>
///常規(guī)
/// </summary>
General = Excel.Constants.xlGeneral,
/// <summary>
/// 靠左
/// </summary>
Left = Excel.Constants.xlLeft,
/// <summary>
/// 居中
/// </summary>
Center = Excel.Constants.xlCenter,
/// <summary>
/// 靠右
/// </summary>
Right = Excel.Constants.xlRight,
/// <summary>
/// 填充
/// </summary>
Fill = Excel.Constants.xlFill,
/// <summary>
/// 兩端對(duì)齊
/// </summary>
Justify = Excel.Constants.xlJustify,
/// <summary>
/// 跨列居中
/// </summary>
CenterAcrossSelection = Excel.Constants.xlCenterAcrossSelection,
/// <summary>
/// 分散對(duì)齊
/// </summary>
Distributed = Excel.Constants.xlDistributed
}
/// <summary>
/// Excel邊框線條的枚舉
/// </summary>
public enum ExcelStyleLine
{
/// <summary>
/// 沒有線條
/// </summary>
StyleNone = Excel.XlLineStyle.xlLineStyleNone,
/// <summary>
/// 連續(xù)的細(xì)線
/// </summary>
Continious = Excel.XlLineStyle.xlContinuous,
/// <summary>
/// 點(diǎn)狀線
/// </summary>
Dot = Excel.XlLineStyle.xlDot,
/// <summary>
/// 雙條線
/// </summary>
Double = Excel.XlLineStyle.xlDouble,
}
/// <summary>
/// 排序的玫舉
/// </summary>
public enum ExcelSortOrder
{
/// <summary>
/// 升序
/// </summary>
Ascending = Excel.XlSortOrder.xlAscending,
/// <summary>
/// 降序
/// </summary>
Descending = Excel.XlSortOrder.xlDescending,
}
#endregion
#region " Construction Method "
/// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
public ExcelBase()
{
//實(shí)例化Excel對(duì)象。
exlApp = new Excel.Application();
}
/// <summary>
/// 構(gòu)造函數(shù)
/// </summary>
/// <param name="ExcelVisible">Excel是否可見</param>
public ExcelBase(bool ExcelVisible)
{
exlApp = new Excel.Application();
exlApp.Visible = ExcelVisible;
}
#endregion
#region " Open and dispose method definition "
/// <summary>
/// 打開一個(gè)Excel文件
/// </summary>
public void Open()
{
//Get a new WorkSheet
exlWorkBook = (Workbook)exlApp.Workbooks.Add(Missing.Value);
exlWorkSheet = (Worksheet)exlWorkBook.ActiveSheet;
}
/// <summary>
/// 打開已經(jīng)存在的Excel文件模版
/// </summary>
/// <param name="XLTPath">已經(jīng)存在的文件模版的完整路徑</param>
public void Open(string XLTPath)
{
if (System.IO.File.Exists(XLTPath))
{
exlWorkBook = (Workbook)exlApp.Workbooks.Add(XLTPath);
exlWorkSheet = (Worksheet)exlWorkBook.ActiveSheet;
}
else
{
throw new System.IO.FileNotFoundException(string.Format("{0}不存在,請(qǐng)重新確定文件名", XLTPath));
}
}
/// <summary>
/// 保存Excel文件
/// </summary>
/// <param name="fileName">保存的文件名</param>
public void SaveAs(string fileName)
{
exlWorkSheet.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value);
}
/// <summary>
/// 徹底關(guān)閉Excel的資源和進(jìn)程
/// </summary>
public void Dispose()
{
if (exlApp != null)
{
exlApp.Quit();
}
if (exlWorkBook != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(exlWorkBook);
exlWorkBook = null;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(exlWorkSheet);
exlWorkSheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(exlApp);
exlApp = null;
GC.Collect();
}
#endregion
#region " Print and PrintPreview method definition "
/// <summary>
/// 打印Excel文件,可以設(shè)置是否是打印前預(yù)覽打印的Excel文件
/// </summary>
/// <param name="IsPrintPreview">打印前是否預(yù)覽 , true:打印前預(yù)覽false:直接打印,不預(yù)覽 </param>
public void Print(bool IsPrintPreview)
{
bool flag = exlApp.Visible;
if (exlApp.Visible)
{
exlApp.Visible = true;
}
exlWorkSheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, IsPrintPreview, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
exlApp.Visible = flag;
}
/// <summary>
/// 打印Excel文件,可以設(shè)置是否打印預(yù)覽,以及打印的份數(shù)
/// </summary>
/// <param name="IsPrintPreview">打印前是否預(yù)覽 , true:打印前預(yù)覽false:直接打印,不預(yù)覽</param>
/// <param name="iCopy">打印的份數(shù)</param>
public void Print(bool IsPrintPreview, int iCopy)
{
if (iCopy < 1)
{
iCopy = 1;
}
exlWorkSheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, IsPrintPreview, iCopy, Missing.Value, Missing.Value, Missing.Value);
}
/// <summary>
/// 打印預(yù)覽Excel文件
/// </summary>
public void PrintPreview()
{
exlWorkSheet.PrintPreview(Missing.Value);
}
#endregion
#region " Detail control excel method "
/// <summary>
/// 將Excel隱藏
/// </summary>
public void Hide()
{
exlApp.Visible = false;
}
/// <summary>
/// 將Excel顯示
/// </summary>
public void Show()
{
exlApp.Visible = true;
}
/// <summary>
/// 設(shè)置工作簿的名稱
/// </summary>
/// <param name="WorkSheet"></param>
public void SetWorkSheetName(string WorkSheet)
{
exlWorkSheet.Name = WorkSheet;
}
/// <summary>
///返回指定單元格的內(nèi)容
/// </summary>
/// <param name="iRow">定位的行</param>
/// <param name="iCol">定位的列</param>
/// <returns>返回指定單元格的內(nèi)容</returns>
public string GetCellText(int iRow, int iCol)
{
Range sRange = GetRange(iRow, iCol, iRow, iCol);
string returnText = (string)sRange.Text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
return returnText;
}
/// <summary>
///返回指定單元格的內(nèi)容
/// </summary>
/// <param name="iRow">定位的行</param>
/// <param name="iCol">定位的列</param>
/// <returns>返回指定單元格的內(nèi)容</returns>
public string GetCellText(int startRow, int startCol, int startRow2, int startCol2)
{
Range sRange = GetRange(startRow, startCol, startRow2, startCol2);
string returnText = (string)sRange.Text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
return returnText;
}
/// <summary>
/// 設(shè)置指定范圍單元格的內(nèi)容,通過(guò)單元格,比如從"A1" 到 "B3"
/// </summary>
/// <param name="startCell">開始的單元格,比如"A1"</param>
/// <param name="endCell">結(jié)束的單元格,比如"B2"</param>機(jī)動(dòng)車統(tǒng)計(jì)表.xlt
/// <param name="text">要設(shè)置的內(nèi)容,可以使用Excel的公式</param>
public void SetCellText(string startCell, string endCell, string text)
{
Range sRange = exlWorkSheet.get_Range(startCell, endCell);
//這里沒有用value屬性,而用Formula屬性,因?yàn)榭紤]到可以擴(kuò)展,可以利用公式
sRange.Cells.Formula = text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍單元格的內(nèi)容,通過(guò)單元格,比如從"A1" 到 "B3"
/// </summary>
/// <param name="startCell">開始的單元格,比如"A1"</param>
/// <param name="endCell">結(jié)束的單元格,比如"B2"</param>機(jī)動(dòng)車統(tǒng)計(jì)表.xlt
/// <param name="text">要設(shè)置的內(nèi)容,可以使用Excel的公式</param>
public void SetCellText(string startCell, string endCell, int text)
{
Range sRange = exlWorkSheet.get_Range(startCell, endCell);
//這里沒有用value屬性,而用Formula屬性,因?yàn)榭紤]到可以擴(kuò)展,可以利用公式
sRange.Cells.Formula = text.ToString();
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的單元格的內(nèi)容,通過(guò)行列來(lái)定位。如第1行第2列內(nèi)容
/// </summary>
/// <param name="iRow">開始的行</param>
/// <param name="iCol">開始的列</param>
///<param name="text">要設(shè)置的文本,可以使用Excel的公式</param>
public void SetCellText(int iRow, int iCol, string text)
{
Range sRange = this.GetRange(iRow, iCol, iRow, iCol);
sRange.Cells.Formula = text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的單元格的內(nèi)容,通過(guò)行列來(lái)定位。如第1行第2列內(nèi)容
/// </summary>
/// <param name="iRow">開始的行</param>
/// <param name="iCol">開始的列</param>
///<param name="text">要設(shè)置的文本,可以使用Excel的公式</param>
public void SetCellTextNOZero(int iRow, int iCol, string text)
{
string txt = "";
try
{
if (System.Convert.ToInt32(text) == 0)
{
txt = "";
}
else
{
txt = text;
}
}
catch
{
txt = text;
}
Range sRange = this.GetRange(iRow, iCol, iRow, iCol);
sRange.Cells.Formula = txt;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的單元格的內(nèi)容,通過(guò)行列來(lái)定位。如第1行第2列內(nèi)容
/// </summary>
/// <param name="iRow">開始的行</param>
/// <param name="iCol">開始的列</param>
///<param name="text">要設(shè)置的文本,可以使用Excel的公式</param>
public void SetCellText(int iRow, int iCol, int text)
{
Range sRange = this.GetRange(iRow, iCol, iRow, iCol);
sRange.Cells.Formula = text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容,比如設(shè)置"A1"單元格的內(nèi)容
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <param name="text">要設(shè)置的內(nèi)容,可以使用Excel的公式,如sum(A1:A7)--合計(jì)A1到A7數(shù)值</param>
public void SetCellText(string cell, string text)
{
Range sRange = GetRange(cell);
sRange.Cells.Formula = text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <param name="num">要設(shè)置的內(nèi)容</param>
public void SetCellText(string cell, Int32 num)
{
Range sRange = GetRange(cell);
sRange.Cells.Formula = num.ToString();
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容,可以指定格式
/// </summary>
/// <param name="cell">要指定的單元格</param>
/// <param name="textValue">要填寫的內(nèi)容</param>
/// <param name="StringFormat">要顯示的格式</param>
///<param name="FontName">設(shè)置單元格的字體</param>
/// <param name="FontSize">設(shè)置單元格的字體大小</param>
public void setCellTextByFormat(string cell, string textValue, string StringFormat, string FontName, string FontSize)
{
Range sRange = GetRange(cell);
sRange.Select();
if (StringFormat != "")
{
sRange.NumberFormatLocal = StringFormat;
}
if (FontName != "")
{
sRange.Font.Name = FontName;
}
if (FontSize != "")
{
sRange.Font.Size = FontSize;
}
sRange.Cells.Formula = textValue;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容,可以指定格式
/// </summary>
/// <param name="cell">要指定的單元格</param>
/// <param name="textValue">要填寫的內(nèi)容</param>
/// <param name="StringFormat">要顯示的格式</param>
///<param name="FontName">設(shè)置單元格的字體</param>
/// <param name="FontSize">設(shè)置單元格的字體大小</param>
/// <param name="colorIndex">設(shè)置單元格的顏色,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
public void setCellTextByFormat(string cell, string textValue, string StringFormat, string FontName, string FontSize, int colorIndex)
{
Range sRange = GetRange(cell);
sRange.Select();
if (StringFormat != "")
{
sRange.Cells.NumberFormatLocal = StringFormat;
}
if (FontName != "")
{
sRange.Font.Name = FontName;
}
if (FontSize != "")
{
sRange.Font.Size = FontSize;
}
if (colorIndex != 0)
{
sRange.Font.ColorIndex = colorIndex;
}
sRange.Cells.Formula = textValue;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容,可以指定格式
/// </summary>
/// <param name="cell">要指定的單元格</param>
/// <param name="textValue">要填寫的內(nèi)容</param>
/// <param name="StringFormat">要顯示的格式</param>
/// <param name="FontName">設(shè)置單元格的字體</param>
/// <param name="FontSize">設(shè)置單元格的字體大小</param>
/// <param name="colorIndex">設(shè)置單元格的顏色,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
/// <param name="Bold">設(shè)置單元格的字體是否粗體</param>
public void setCellTextByFormat(string cell, string textValue, string StringFormat, string FontName, string FontSize, int colorIndex, bool Bold)
{
Range sRange = GetRange(cell);
sRange.Select();
if (StringFormat != "")
{
sRange.Cells.NumberFormatLocal = StringFormat;
}
if (FontName != "")
{
sRange.Font.Name = FontName;
}
if (FontSize != "")
{
sRange.Font.Size = FontSize;
}
if (colorIndex != 0)
{
sRange.Font.ColorIndex = colorIndex;
}
sRange.Font.Bold = Bold;
sRange.Cells.Formula = textValue;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容,可以指定格式
/// </summary>
/// <param name="cell">要指定的單元格</param>
/// <param name="textValue">要填寫的內(nèi)容</param>
/// <param name="StringFormat">要顯示的格式</param>
/// <param name="FontName">設(shè)置單元格的字體</param>
/// <param name="FontSize">設(shè)置單元格的字體大小</param>
/// <param name="colorIndex">設(shè)置單元格的顏色,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
/// <param name="Bold">設(shè)置單元格的字體是否粗體</param>
/// <param name="BcolorIndex">設(shè)置單元格背景顏色</param>
public void setCellTextByFormat(string cell, string textValue, string StringFormat, string FontName, string FontSize, int colorIndex, bool Bold, int BcolorIndex)
{
Range sRange = GetRange(cell);
sRange.Select();
if (StringFormat != "")
{
sRange.Cells.NumberFormatLocal = StringFormat;
}
if (FontName != "")
{
sRange.Font.Name = FontName;
}
if (FontSize != "")
{
sRange.Font.Size = FontSize;
}
if (colorIndex != 0)
{
sRange.Font.ColorIndex = colorIndex;
}
sRange.Font.Bold = Bold;
sRange.Cells.Formula = textValue;
sRange.Interior.ColorIndex = BcolorIndex;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置單元格的內(nèi)容(指定單元格的格式化字符串)
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <param name="textValue">內(nèi)容</param>
/// <param name="stringFormat">格式化字符串</param>
public void setCellText(string cell, string textValue, string stringFormat)
{
Range sRange = GetRange(cell);
sRange.Select();
if (stringFormat != "")
{
sRange.Cells.NumberFormatLocal = stringFormat;
}
sRange.Cells.Formula = textValue;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 得到指定單元格的內(nèi)容
/// </summary>
/// <param name="cell">指定的單元格比如 A1,A2</param>
/// <returns>返回指定的內(nèi)容</returns>
public object GetCellText(string cell)
{
object returnValue;
Range sRange = GetRange(cell);
returnValue = sRange.Cells.Text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
return returnValue;
}
/// <summary>
/// 設(shè)置指定單元格的內(nèi)容,比如設(shè)置"A1"單元格的內(nèi)容
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <param name="text">要設(shè)置的內(nèi)容,使用Excel里面的R1C1這樣的格式(不知道是不是畫蛇添足,因?yàn)镋xcel里的Macro中是這樣使用的)</param>
public void SetCellTextR1C1(string cell, string text)
{
Range sRange = GetRange(cell);
sRange.Cells.FormulaR1C1 = text;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
///設(shè)置單元格的單元格格式
/// </summary>
/// <param name="cell">要設(shè)定的單元格的坐標(biāo)</param>
/// <param name="formatString">單元格的格式化字符
/// 常規(guī):"G/通用格式"
/// 數(shù)值:"[紅色]-0.00"(表示是2位小數(shù),如果是負(fù)數(shù)的話則用紅色表示)
/// 貨幣:"¥#,##0.000;[紅色]¥-#,##0.000"(¥是貨幣符號(hào),可以用$,也可以不填寫,0.000代表三位小數(shù)位;[紅色]表示如果是負(fù)數(shù)的話,用紅色表示)
/// 日期:@"yyyy"年"m"月"d"日";@" (表示用年月日了表示) @"[DBNum1][$-804]yyyy"年"m"月"d"日";@"(表示用漢字表示年月日)
/// 百分比:"0.000%;[紅色]-0.000%"(表示小數(shù)位為3位,紅色表示如果是負(fù)數(shù)的話則用紅色表示)
/// 文本:"@"(表示是文本格式)
/// 特殊:"[DBNum1][$-804]G/通用格式"(能將數(shù)字轉(zhuǎn)換成中文小寫,如1234轉(zhuǎn)換成一千二百三十四) "[DBNum2][$-804]G/通用格式"(能將數(shù)字轉(zhuǎn)換成中文大寫,如1234轉(zhuǎn)換成 壹仟貳佰叁拾肆)
/// 自定義:輸入自定義的格式化字符串
/// </param>
public void SetCellFormat(string cell, string formatString)
{
Range sRange = GetRange(cell);
sRange.Select();
sRange.NumberFormatLocal = formatString;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的單元格格式
/// </summary>
/// <param name="startCell">開始的單元格</param>
/// <param name="endCell">結(jié)束的單元格</param>
/// <param name="formatString">單元格的格式化字符
/// 常規(guī):"G/通用格式"
/// 數(shù)值:"[紅色]-0.00"(表示是2位小數(shù),如果是負(fù)數(shù)的話則用紅色表示)
/// 貨幣:"¥#,##0.000;[紅色]¥-#,##0.000"(¥是貨幣符號(hào),可以用$,也可以不填寫,0.000代表三位小數(shù)位;[紅色]表示如果是負(fù)數(shù)的話,用紅色表示)
/// 日期:@"yyyy"年"m"月"d"日";@" (表示用年月日了表示) @"[DBNum1][$-804]yyyy"年"m"月"d"日";@"(表示用漢字表示年月日)
/// 百分比:"0.000%;[紅色]-0.000%"(表示小數(shù)位為3位,紅色表示如果是負(fù)數(shù)的話則用紅色表示)
/// 文本:"@"(表示是文本格式)
/// 特殊:"[DBNum1][$-804]G/通用格式"(能將數(shù)字轉(zhuǎn)換成中文小寫,如1234轉(zhuǎn)換成一千二百三十四) "[DBNum2][$-804]G/通用格式"(能將數(shù)字轉(zhuǎn)換成中文大寫,如1234轉(zhuǎn)換成 壹仟貳佰叁拾肆)
/// 自定義:輸入自定義的格式化字符串</param>
public void SetAreaCellFormat(string startCell, string endCell, string formatString)
{
Range sRange = GetRange(startCell, endCell);
sRange.Select();
sRange.NumberFormatLocal = formatString;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置某一列,某幾列的列寬為自動(dòng)適應(yīng)大小,比如要設(shè)置第1列為自動(dòng)適應(yīng)大小SetColumnAutoFit("A","A")
/// </summary>
/// <param name="startColumn">開始的列</param>
/// <param name="endColumn">結(jié)束的列</param>
///
//TODO:stapangpang 要增加自動(dòng)適應(yīng)列大小的方法
public void SetColumnAutoFit(string startColumn, string endColumn)
{
Range sRange = (Range)exlWorkSheet.Columns[String.Format("{0}:{1}", startColumn, endColumn), Missing.Value];
sRange.Select();
sRange.EntireColumn.AutoFit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
#endregion
#region " Get excel range method definition "
/// <summary>
/// 根據(jù)行列的定位,返回選定的單元格。因?yàn)镽ange 是通過(guò)Cell來(lái)定位的,而Cell需要2個(gè)參數(shù)定位,所以需要四個(gè)參數(shù)。
/// </summary>
/// <param name="iStartRow">定位開始Range的Cell的行</param>
/// <param name="iStartCol">定位開始Range的Cell的列</param>
/// <param name="iEndRow">定位結(jié)束Range的Cell的行</param>
/// <param name="iEndCol">定位結(jié)束Range的Cell的列</param>
/// <returns>返回指定范圍的Range</returns>
public Range GetRange(int iStartRow, int iStartCol, int iEndRow, int iEndCol)
{
return exlWorkSheet.get_Range(exlApp.Cells[iStartRow, iStartCol], exlApp.Cells[iEndRow, iEndCol]);
}
/// <summary>
/// 返回指定的單元格
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <returns>返回指定的單元格</returns>
public Range GetRange(string cell)
{
return exlWorkSheet.get_Range(cell, Missing.Value);
}
/// <summary>
/// 返回一個(gè)單元格的范圍
/// </summary>
/// <param name="startCell">開始的單元格坐標(biāo)</param>
/// <param name="endCell">結(jié)束的單元格坐標(biāo)</param>
/// <returns>返回指定的單元格范圍</returns>
public Range GetRange(string startCell, string endCell)
{
return exlWorkSheet.get_Range(startCell, endCell);
}
/// <summary>
/// 增加一個(gè)工作簿
/// </summary>
public void AddWorkSheet()
{
if (this.sheetNumber <= 3)
{
exlApp.ActiveWorkbook.Sheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
exlWorkSheet = (Worksheet)exlWorkBook.ActiveSheet;
exlWorkSheet.Select(Missing.Value);
}
else
{
sheetNumber ;
exlApp.ActiveWorkbook.Sheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
exlWorkSheet = (Worksheet)exlWorkBook.ActiveSheet;
exlWorkSheet.Select(Missing.Value);
}
//exlWorkBook.ActiveSheet;
}
#endregion
#region " Excel range style method definition "
/// <summary>
/// 設(shè)置單元格的垂直方向?qū)R方式
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <param name="cellAlignment">垂直方向的對(duì)齊方式</param>
public void SetCellVerticalAlignment(string cell, ExcelVerticalAlignment cellAlignment)
{
Range sRange = GetRange(cell);
sRange.Select();
sRange.VerticalAlignment = cellAlignment;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)定指定范圍的單元格的垂直對(duì)齊方式
/// </summary>
/// <param name="startCell">開始的單元格的坐標(biāo)</param>
/// <param name="endCell">結(jié)束單元格的坐標(biāo)</param>
/// <param name="cellAlignment">對(duì)齊方式</param>
public void SetCellAreaVerticalAlignment(string startCell, string endCell, ExcelVerticalAlignment cellAlignment)
{
Range sRange = GetRange(startCell, endCell);
sRange.Select();
sRange.VerticalAlignment = cellAlignment;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的單元格的水平方向的對(duì)齊方式
/// </summary>
/// <param name="cell">指定的單元格</param>
/// <param name="cellAlignment">水平方向的對(duì)齊方式</param>
public void SetCellHorizontalAlignment(string cell, ExcelHorizontalAlignment cellAlignment)
{
Range sRange = GetRange(cell);
sRange.Select();
sRange.HorizontalAlignment = cellAlignment;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)定指定范圍的單元格的水平對(duì)齊方式
/// </summary>
/// <param name="startCell">開始的單元格的坐標(biāo)</param>
/// <param name="endCell">結(jié)束單元格的坐標(biāo)</param>
/// <param name="cellAlignment">對(duì)齊方式</param>
public void SetCellAreaHorizontalAlignment(string startCell, string endCell, ExcelHorizontalAlignment cellAlignment)
{
Range sRange = GetRange(startCell, endCell);
sRange.Select();
sRange.HorizontalAlignment = cellAlignment;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格的邊框,這里只能設(shè)置單個(gè)單元格的邊框
/// </summary>
/// <param name="cell">要設(shè)定的單元格</param>
public void SetCellBorder(string cell)
{
Range sRange = GetRange(cell);
//上邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].ColorIndex = Excel.Constants.xlAutomatic;
//底邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].ColorIndex = Excel.Constants.xlAutomatic;
//右邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].ColorIndex = Excel.Constants.xlAutomatic;
//左邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].ColorIndex = Excel.Constants.xlAutomatic;
//釋放資源
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的Excel單元格的邊框,包括外邊框,內(nèi)邊框
/// </summary>
/// <param name="startCell">開始的單元格坐標(biāo)</param>
/// <param name="endCell">結(jié)束的單元格坐標(biāo)</param>
public void SetAreaBorder1(string startCell, String endCell)
{
Range sRange = GetRange(startCell, endCell);
//上邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].ColorIndex = Excel.Constants.xlAutomatic;
//底邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].ColorIndex = Excel.Constants.xlAutomatic;
//右邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].ColorIndex = Excel.Constants.xlAutomatic;
//左邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].ColorIndex = Excel.Constants.xlAutomatic;
//范圍內(nèi)豎直豎線
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideVertical].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideVertical].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideVertical].ColorIndex = Excel.Constants.xlAutomatic;
//釋放資源
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定范圍的Excel單元格的邊框,包括外邊框,內(nèi)邊框
/// </summary>
/// <param name="startCell">開始的單元格坐標(biāo)</param>
/// <param name="endCell">結(jié)束的單元格坐標(biāo)</param>
public void SetAreaBorder(string startCell, String endCell)
{
Range sRange = GetRange(startCell, endCell);
//上邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeTop].ColorIndex = Excel.Constants.xlAutomatic;
//底邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeBottom].ColorIndex = Excel.Constants.xlAutomatic;
//右邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeRight].ColorIndex = Excel.Constants.xlAutomatic;
//左邊框
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.EdgeLeft].ColorIndex = Excel.Constants.xlAutomatic;
//范圍內(nèi)水平橫線
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideHorizontal].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideHorizontal].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideHorizontal].ColorIndex = Excel.Constants.xlAutomatic;
//范圍內(nèi)豎直豎線
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideVertical].LineStyle = ExcelStyleLine.Continious;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideVertical].Weight = ExcelBorderWeight.Thin;
sRange.Borders[(Excel.XlBordersIndex)ExcelBordersIndex.InsideVertical].ColorIndex = Excel.Constants.xlAutomatic;
//釋放資源
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置單元格的顏色
/// </summary>
/// <param name="cell">定位改單元格</param>
/// <param name="colorIndex">顏色的代碼,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
public void SetCellBackGroundColor(string cell, int colorIndex)
{
Range sRange = GetRange(cell);
sRange.Select();
sRange.Font.ColorIndex = colorIndex;
//釋放資源
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 設(shè)置指定單元格范圍的顏色
/// </summary>
/// <param name="startCell">開始的單元格</param>
/// <param name="endCell">結(jié)束的單元格</param>
/// <param name="colorIndex">顏色的代碼,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
public void SetAreaCellBackGroundColor(string startCell, string endCell, int colorIndex)
{
Range sRange = GetRange(startCell, endCell);
sRange.Select();
sRange.Font.ColorIndex = colorIndex;
System.Runtime.InteropServices.Marshal.ReleaseComObject(sRange);
sRange = null;
}
/// <summary>
/// 合并單元格
/// <param name="startCell">開始的單元格</param>
/// <param name="endCell">結(jié)束的單元格</param>
/// </summary>
public void SetMergeCells(string startCell, string endCell)
{
Range sRange = GetRange(startCell, endCell);
sRange.MergeCells = true;
}
/// <summary>
/// 合并單元格
/// <param name="iStartRow">定位開始Range的Cell的行(A1=1,1)</param>
/// <param name="iStartCol">定位開始Range的Cell的列(A1=1,1)</param>
/// <param name="iEndRow">定位結(jié)束Range的Cell的行(A1=1,1)</param>
/// <param name="iEndCol">定位結(jié)束Range的Cell的列(A1=1,1)</param>
/// </summary>
public void SetMergeCells(int iStartRow, int iStartCol, int iEndRow, int iEndCol)
{
Range sRange = GetRange(iStartRow, iStartCol, iEndRow, iEndCol);
sRange.MergeCells = true;
}
/// <summary>
/// 設(shè)置單元格背景顏色
/// <param name="startCell">開始的單元格</param>
/// <param name="endCell">結(jié)束的單元格</param>
/// <param name="ColorIndex">顏色的代碼,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
/// </summary>
public void SetInteriorColor(string startCell, string endCell, int ColorIndex)
{
Range sRange = GetRange(startCell, endCell);
sRange.Interior.ColorIndex = ColorIndex;
}
/// <summary>
/// 設(shè)置單元格背景顏色
/// <param name="iStartRow">定位開始Range的Cell的行(A1=1,1)</param>
/// <param name="iStartCol">定位開始Range的Cell的列(A1=1,1)</param>
/// <param name="iEndRow">定位結(jié)束Range的Cell的行(A1=1,1)</param>
/// <param name="iEndCol">定位結(jié)束Range的Cell的列(A1=1,1)</param>
/// <param name="ColorIndex">顏色的代碼,我查了MSDN但是沒有顏色代碼的說(shuō)明,Excel中一共有56種顏色的代碼,常用的幾個(gè)是
/// 1-黑色 2-白色 3-紅色 4-草綠色 5-藍(lán)色 6-黃色 7-紫色 ,如果想看仔細(xì)的顏色,就依次從 1 循環(huán)到 56 把顏色打印出來(lái)看看</param>
/// </summary>
public void SetInteriorColor(int iStartRow, int iStartCol, int iEndRow, int iEndCol, int ColorIndex)
{
Range sRange = GetRange(iStartRow, iStartCol, iEndRow, iEndCol);
sRange.Interior.ColorIndex = ColorIndex;
}
#endregion
}
}
原文鏈接:C#操作Excel幫助類