using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
namespace Excel操作
{
class ExcelEdit
{
string myFileName;
Microsoft.Office.Interop.Excel.Application myExcel;
Microsoft.Office.Interop.Excel.Workbook myWorkBook;
/// <summary><br /> /// 构造函数,不创建Excel工作薄<br /> /// </summary><br /> public ExcelEdit()<br /> {<br /> }/// <summary><br /> /// 创建Excel工作薄<br /> /// </summary><br /> public void CreateExcel()<br /> {<br /> myExcel = new Microsoft.Office.Interop.Excel.Application();<br /> myWorkBook = myExcel.Application.Workbooks.Add(true);<br /> }/// <summary><br /> /// 显示Excel<br /> /// </summary><br /> public void ShowExcel()<br /> {<br /> myExcel.Visible = true;<br /> }/// <summary><br /> /// 将数据写入Excel<br /> /// </summary><br /> /// <param name="data">要写入的二维数组数据</param><br /> /// <param name="startRow">Excel中的起始行</param><br /> /// <param name="startColumn">Excel中的起始列</param><br /> public void WriteData(string[,] data, int startRow, int startColumn)<br /> {<br /> int rowNumber = data.GetLength(0);<br /> int columnNumber = data.GetLength(1);for (int i = 0; i < rowNumber; i++)<br /> {<br /> for (int j = 0; j < columnNumber; j++)<br /> {<br /> //在Excel中,如果某单元格以单引号“'”开头,表示该单元格为纯文本,因此,我们在每个单元格前面加单引号。 <br /> myExcel.Cells[startRow + i, startColumn + j] = "'" + data[i, j];<br /> }<br /> }<br /> }/// <summary><br /> /// 将数据写入Excel<br /> /// </summary><br /> /// <param name="data">要写入的字符串</param><br /> /// <param name="starRow">写入的行</param><br /> /// <param name="startColumn">写入的列</param><br /> public void WriteData(string data, int row, int column)<br /> {<br /> myExcel.Cells[row, column] = data;<br /> }/// <summary><br /> /// 将数据写入Excel<br /> /// </summary><br /> /// <param name="data">要写入的数据表</param><br /> /// <param name="startRow">Excel中的起始行</param><br /> /// <param name="startColumn">Excel中的起始列</param><br /> public void WriteData(System.Data.DataTable data, int startRow, int startColumn)<br /> {<br /> for (int i = 0; i <= data.Rows.Count - 1; i++)<br /> {<br /> for (int j = 0; j <= data.Columns.Count - 1; j++)<br /> {<br /> //在Excel中,如果某单元格以单引号“'”开头,表示该单元格为纯文本,因此,我们在每个单元格前面加单引号。 <br /> myExcel.Cells[startRow + i, startColumn + j] = "'" + data.Rows[i][j].ToString();<br /> }<br /> }<br /> }/// <summary><br /> /// 读取指定单元格数据<br /> /// </summary><br /> /// <param name="row">行序号</param><br /> /// <param name="column">列序号</param><br /> /// <returns>该格的数据</returns><br /> public string ReadData(int row, int column)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[row, column], myExcel.Cells[row, column]);<br /> return range.Text.ToString();<br /> }/// <summary><br /> /// 向Excel中插入图片<br /> /// </summary><br /> /// <param name="pictureName">图片的绝对路径加文件名</param><br /> public void InsertPictures(string pictureName)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> //后面的数字表示位置,位置默认<br /> worksheet.Shapes.AddPicture(pictureName, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150);<br /> }/// <summary><br /> /// 向Excel中插入图片<br /> /// </summary><br /> /// <param name="pictureName">图片的绝对路径加文件名</param><br /> /// <param name="left">左边距</param><br /> /// <param name="top">右边距</param><br /> /// <param name="width">宽</param><br /> /// <param name="heigth">高</param><br /> public void InsertPictures(string pictureName, int left, int top, int width, int heigth)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> worksheet.Shapes.AddPicture(pictureName, MsoTriState.msoFalse, MsoTriState.msoTrue, top, left, heigth, width);<br /> }/// <summary><br /> /// 重命名工作表<br /> /// </summary><br /> /// <param name="sheetNum">工作表序号,从左到右,从1开始</param><br /> /// <param name="newSheetName">新的工作表名</param><br /> public void ReNameSheet(int sheetNum, string newSheetName)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.Worksheets[sheetNum];<br /> worksheet.Name = newSheetName;<br /> }/// <summary><br /> /// 重命名工作表<br /> /// </summary><br /> /// <param name="oldSheetName">原有工作表名</param><br /> /// <param name="newSheetName">新的工作表名</param><br /> public void ReNameSheet(string oldSheetName, string newSheetName)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.Worksheets[oldSheetName];<br /> worksheet.Name = newSheetName;<br /> }/// <summary><br /> /// 新建工作表<br /> /// </summary><br /> /// <param name="sheetName">工作表名</param><br /> public void CreateWorkSheet(string sheetName)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet newWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);<br /> newWorksheet.Name = sheetName;<br /> }/// <summary><br /> /// 激活工作表<br /> /// </summary><br /> /// <param name="sheetName">工作表名</param><br /> public void ActivateSheet(string sheetName)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.Worksheets[sheetName];<br /> worksheet.Activate();<br /> }/// <summary><br /> /// 激活工作表<br /> /// </summary><br /> /// <param name="sheetNum">工作表序号</param><br /> public void ActivateSheet(int sheetNum)<br /> {<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.Worksheets[sheetNum];<br /> worksheet.Activate();<br /> }/// <summary><br /> /// 删除一个工作表<br /> /// </summary><br /> /// <param name="SheetName">删除的工作表名</param><br /> public void DeleteSheet(int sheetNum)<br /> {<br /> ((Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[sheetNum]).Delete();<br /> }/// <summary><br /> /// 删除一个工作表<br /> /// </summary><br /> /// <param name="SheetName">删除的工作表序号</param><br /> public void DeleteSheet(string sheetName)<br /> {<br /> ((Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets[sheetName]).Delete();<br /> }/// <summary><br /> /// 合并单元格<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> public void CellsUnite(int startRow, int startColumn, int endRow, int endColumn)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.MergeCells = true;<br /> }/// <summary><br /> /// 单元格文字对齐方式<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="hAlign">水平对齐</param><br /> /// <param name="vAlign">垂直对齐</param><br /> public void CellsAlignment(int startRow, int startColumn, int endRow, int endColumn, ExcelHAlign hAlign, ExcelVAlign vAlign)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.HorizontalAlignment = hAlign;<br /> range.VerticalAlignment = vAlign;<br /> }/// <summary><br /> /// 绘制指定单元格的边框<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> public void CellsDrawFrame(int startRow, int startColumn, int endRow, int endColumn)<br /> {<br /> CellsDrawFrame(startRow, startColumn, endRow, endColumn,<br /> true, true, true, true, true, true, false, false,<br /> LineStyle.连续直线, BorderWeight.细, ColorIndex.自动);<br /> }/// <summary><br /> /// 绘制指定单元格的边框<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="isDrawTop">是否画上外框</param><br /> /// <param name="isDrawBottom">是否画下外框</param><br /> /// <param name="isDrawLeft">是否画左外框</param><br /> /// <param name="isDrawRight">是否画右外框</param><br /> /// <param name="isDrawHInside">是否画水平内框</param><br /> /// <param name="isDrawVInside">是否画垂直内框</param><br /> /// <param name="isDrawDown">是否画斜向下线</param><br /> /// <param name="isDrawUp">是否画斜向上线</param><br /> /// <param name="lineStyle">线类型</param><br /> /// <param name="borderWeight">线粗细</param><br /> /// <param name="color">线颜色</param><br /> public void CellsDrawFrame(int startRow, int startColumn, int endRow, int endColumn,<br /> bool isDrawTop, bool isDrawBottom, bool isDrawLeft, bool isDrawRight,<br /> bool isDrawHInside, bool isDrawVInside, bool isDrawDiagonalDown, bool isDrawDiagonalUp,<br /> LineStyle lineStyle, BorderWeight borderWeight, ColorIndex color)<br /> {<br /> //获取画边框的单元格<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);//清除所有边框<br /> range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = LineStyle.无;<br /> range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = LineStyle.无;//以下是按参数画边框 <br /> if (isDrawTop)<br /> {<br /> range.Borders[XlBordersIndex.xlEdgeTop].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlEdgeTop].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlEdgeTop].ColorIndex = color;<br /> }if (isDrawBottom)<br /> {<br /> range.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlEdgeBottom].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlEdgeBottom].ColorIndex = color;<br /> }if (isDrawLeft)<br /> {<br /> range.Borders[XlBordersIndex.xlEdgeLeft].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlEdgeLeft].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlEdgeLeft].ColorIndex = color;<br /> }if (isDrawRight)<br /> {<br /> range.Borders[XlBordersIndex.xlEdgeRight].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlEdgeRight].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlEdgeRight].ColorIndex = color;<br /> }if (isDrawVInside)<br /> {<br /> range.Borders[XlBordersIndex.xlInsideVertical].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlInsideVertical].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlInsideVertical].ColorIndex = color;<br /> }if (isDrawHInside)<br /> {<br /> range.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlInsideHorizontal].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlInsideHorizontal].ColorIndex = color;<br /> }if (isDrawDiagonalDown)<br /> {<br /> range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlDiagonalDown].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlDiagonalDown].ColorIndex = color;<br /> }if (isDrawDiagonalUp)<br /> {<br /> range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = lineStyle;<br /> range.Borders[XlBordersIndex.xlDiagonalUp].Weight = borderWeight;<br /> range.Borders[XlBordersIndex.xlDiagonalUp].ColorIndex = color;<br /> }<br /> }/// <summary><br /> /// 单元格背景色及填充方式<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="color">颜色索引</param><br /> public void CellsBackColor(int startRow, int startColumn, int endRow, int endColumn, ColorIndex color)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.Interior.ColorIndex = color;<br /> range.Interior.Pattern = Pattern.Solid;<br /> }/// <summary><br /> /// 单元格背景色及填充方式<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="color">颜色索引</param><br /> /// <param name="pattern">填充方式</param><br /> public void CellsBackColor(int startRow, int startColumn, int endRow, int endColumn, ColorIndex color, Pattern pattern)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.Interior.ColorIndex = color;<br /> range.Interior.Pattern = pattern;<br /> }/// <summary><br /> /// 设置行高<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="height">行高</param><br /> public void SetRowHeight(int startRow, int endRow, int height)<br /> {<br /> //获取当前正在使用的工作表<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Rows[startRow.ToString() + ":" + endRow.ToString(), System.Type.Missing];<br /> range.RowHeight = height;<br /> }/// <summary><br /> /// 自动调整行高<br /> /// </summary><br /> /// <param name="columnNum">列号</param><br /> public void RowAutoFit(int rowNum)<br /> {<br /> //获取当前正在使用的工作表<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Rows[rowNum.ToString() + ":" + rowNum.ToString(), System.Type.Missing];<br /> range.EntireColumn.AutoFit();}/// <summary><br /> /// 设置列宽<br /> /// </summary><br /> /// <param name="startColumn">起始列(列对应的字母)</param><br /> /// <param name="endColumn">结束列(列对应的字母)</param><br /> /// <param name="width"></param><br /> public void SetColumnWidth(string startColumn, string endColumn, int width)<br /> {<br /> //获取当前正在使用的工作表<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Columns[startColumn + ":" + endColumn, System.Type.Missing];<br /> range.ColumnWidth = width;<br /> }/// <summary><br /> /// 设置列宽<br /> /// </summary><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="width"></param><br /> public void SetColumnWidth(int startColumn, int endColumn, int width)<br /> {<br /> string strStartColumn = GetColumnName(startColumn);<br /> string strEndColumn = GetColumnName(endColumn);<br /> //获取当前正在使用的工作表<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Columns[strStartColumn + ":" + strEndColumn, System.Type.Missing];<br /> range.ColumnWidth = width;<br /> }/// <summary><br /> /// 自动调整列宽<br /> /// </summary><br /> /// <param name="columnNum">列号</param><br /> public void ColumnAutoFit(string column)<br /> {<br /> //获取当前正在使用的工作表<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Columns[column + ":" + column, System.Type.Missing];<br /> range.EntireColumn.AutoFit();}/// <summary><br /> /// 自动调整列宽<br /> /// </summary><br /> /// <param name="columnNum">列号</param><br /> public void ColumnAutoFit(int columnNum)<br /> {<br /> string strcolumnNum = GetColumnName(columnNum);<br /> //获取当前正在使用的工作表<br /> Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)myExcel.ActiveSheet;<br /> Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Columns[strcolumnNum + ":" + strcolumnNum, System.Type.Missing];<br /> range.EntireColumn.AutoFit();}/// <summary><br /> /// 字体颜色<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="color">颜色索引</param><br /> public void FontColor(int startRow, int startColumn, int endRow, int endColumn, ColorIndex color)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.Font.ColorIndex = color;<br /> }/// <summary><br /> /// 字体样式(加粗,斜体,下划线)<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="isBold">是否加粗</param><br /> /// <param name="isItalic">是否斜体</param><br /> /// <param name="underline">下划线类型</param><br /> public void FontStyle(int startRow, int startColumn, int endRow, int endColumn, bool isBold, bool isItalic, UnderlineStyle underline)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.Font.Bold = isBold;<br /> range.Font.Underline = underline;<br /> range.Font.Italic = isItalic;<br /> }/// <summary><br /> /// 单元格字体及大小<br /> /// </summary><br /> /// <param name="startRow">起始行</param><br /> /// <param name="startColumn">起始列</param><br /> /// <param name="endRow">结束行</param><br /> /// <param name="endColumn">结束列</param><br /> /// <param name="fontName">字体名称</param><br /> /// <param name="fontSize">字体大小</param><br /> public void FontNameSize(int startRow, int startColumn, int endRow, int endColumn, string fontName, int fontSize)<br /> {<br /> Microsoft.Office.Interop.Excel.Range range = myExcel.get_Range(myExcel.Cells[startRow, startColumn], myExcel.Cells[endRow, endColumn]);<br /> range.Font.Name = fontName;<br /> range.Font.Size = fontSize;<br /> }/// <summary><br /> /// 打开一个存在的Excel文件<br /> /// </summary><br /> /// <param name="fileName">Excel完整路径加文件名</param><br /> public void Open(string fileName)<br /> {<br /> myExcel = new Microsoft.Office.Interop.Excel.Application();<br /> myWorkBook = myExcel.Workbooks.Add(fileName);<br /> myFileName = fileName;<br /> }/// <summary><br /> /// 保存Excel<br /> /// </summary><br /> /// <returns>保存成功返回True</returns><br /> public bool Save()<br /> {<br /> if (myFileName == "")<br /> {<br /> return false;<br /> }<br /> else<br /> {<br /> try<br /> {<br /> myWorkBook.Save();<br /> return true;<br /> }<br /> catch (Exception ex)<br /> {<br /> return false;<br /> }<br /> }<br /> }/// <summary><br /> /// Excel文档另存为<br /> /// </summary><br /> /// <param name="fileName">保存完整路径加文件名</param><br /> /// <returns>保存成功返回True</returns><br /> public bool SaveAs(string fileName)<br /> {<br /> try<br /> {<br /> myWorkBook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);<br /> return true;}<br /> catch (Exception ex)<br /> {<br /> return false;}<br /> }/// <summary><br /> /// 关闭Excel<br /> /// </summary><br /> public void Close()<br /> {<br /> myWorkBook.Close(Type.Missing, Type.Missing, Type.Missing);<br /> myExcel.Quit();<br /> myWorkBook = null;<br /> myExcel = null;<br /> GC.Collect();<br /> }/// <summary><br /> /// 关闭Excel<br /> /// </summary><br /> /// <param name="isSave">是否保存</param><br /> public void Close(bool isSave)<br /> {<br /> myWorkBook.Close(isSave, Type.Missing, Type.Missing);<br /> myExcel.Quit();<br /> myWorkBook = null;<br /> myExcel = null;<br /> GC.Collect();<br /> }/// <summary><br /> /// 关闭Excel<br /> /// </summary><br /> /// <param name="isSave">是否保存</param><br /> /// <param name="fileName">存储文件名</param><br /> public void Close(bool isSave, string fileName)<br /> {<br /> myWorkBook.Close(isSave, fileName, Type.Missing);<br /> myExcel.Quit();<br /> myWorkBook = null;<br /> myExcel = null;<br /> GC.Collect();<br /> }#region 私有成员<br /> private string GetColumnName(int number)<br /> {<br /> int h, l;<br /> h = number / 26;<br /> l = number % 26;<br /> if (l == 0)<br /> {<br /> h -= 1;<br /> l = 26;<br /> }<br /> string s = GetLetter(h) + GetLetter(l);<br /> return s;<br /> }private string GetLetter(int number)<br /> {<br /> switch (number)<br /> {<br /> case 1:<br /> return "A";<br /> case 2:<br /> return "B";<br /> case 3:<br /> return "C";<br /> case 4:<br /> return "D";<br /> case 5:<br /> return "E";<br /> case 6:<br /> return "F";<br /> case 7:<br /> return "G";<br /> case 8:<br /> return "H";<br /> case 9:<br /> return "I";<br /> case 10:<br /> return "J";<br /> case 11:<br /> return "K";<br /> case 12:<br /> return "L";<br /> case 13:<br /> return "M";<br /> case 14:<br /> return "N";<br /> case 15:<br /> return "O";<br /> case 16:<br /> return "P";<br /> case 17:<br /> return "Q";<br /> case 18:<br /> return "R";<br /> case 19:<br /> return "S";<br /> case 20:<br /> return "T";<br /> case 21:<br /> return "U";<br /> case 22:<br /> return "V";<br /> case 23:<br /> return "W";<br /> case 24:<br /> return "X";<br /> case 25:<br /> return "Y";<br /> case 26:<br /> return "Z";<br /> default:<br /> return "";<br /> }<br /> }<br /> #endregion}/// <summary><br /> /// 水平对齐方式<br /> /// </summary><br /> public enum ExcelHAlign<br /> {<br /> 常规 = 1,<br /> 靠左,<br /> 居中,<br /> 靠右,<br /> 填充,<br /> 两端对齐,<br /> 跨列居中,<br /> 分散对齐<br /> }/// <summary><br /> /// 垂直对齐方式<br /> /// </summary><br /> public enum ExcelVAlign<br /> {<br /> 靠上 = 1,<br /> 居中,<br /> 靠下,<br /> 两端对齐,<br /> 分散对齐<br /> }/// <summary><br /> /// 线粗<br /> /// </summary><br /> public enum BorderWeight<br /> {<br /> 极细 = 1,<br /> 细 = 2,<br /> 粗 = -4138,<br /> 极粗 = 4<br /> }/// <summary><br /> /// 线样式<br /> /// </summary><br /> public enum LineStyle<br /> {<br /> 连续直线 = 1,<br /> 短线 = -4115,<br /> 线点相间 = 4,<br /> 短线间两点 = 5,<br /> 点 = -4118,<br /> 双线 = -4119,<br /> 无 = -4142,<br /> 少量倾斜点 = 13<br /> }/// <summary><br /> /// 下划线方式<br /> /// </summary><br /> public enum UnderlineStyle<br /> {<br /> 无下划线 = -4142,<br /> 双线 = -4119,<br /> 双线充满全格 = 5,<br /> 单线 = 2,<br /> 单线充满全格 = 4<br /> }/// <summary><br /> /// 单元格填充方式<br /> /// </summary><br /> public enum Pattern<br /> {<br /> Automatic = -4105,<br /> Checker = 9,<br /> CrissCross = 16,<br /> Down = -4121,<br /> Gray16 = 17,<br /> Gray25 = -4124,<br /> Gray50 = -4125,<br /> Gray75 = -4126,<br /> Gray8 = 18,<br /> Grid = 15,<br /> Horizontal = -4128,<br /> LightDown = 13,<br /> LightHorizontal = 11,<br /> LightUp = 14,<br /> LightVertical = 12,<br /> None = -4142,<br /> SemiGray75 = 10,<br /> Solid = 1,<br /> Up = -4162,<br /> Vertical = -4166<br /> }/// <summary><br /> /// 常用颜色定义,对就Excel中颜色名<br /> /// </summary><br /> public enum ColorIndex<br /> {<br /> 无色 = -4142,<br /> 自动 = -4105,<br /> 黑色 = 1,<br /> 褐色 = 53,<br /> 橄榄 = 52,<br /> 深绿 = 51,<br /> 深青 = 49,<br /> 深蓝 = 11,<br /> 靛蓝 = 55,<br /> 灰色80 = 56,<br /> 深红 = 9,<br /> 橙色 = 46,<br /> 深黄 = 12,<br /> 绿色 = 10,<br /> 青色 = 14,<br /> 蓝色 = 5,<br /> 蓝灰 = 47,<br /> 灰色50 = 16,<br /> 红色 = 3,<br /> 浅橙色 = 45,<br /> 酸橙色 = 43,<br /> 海绿 = 50,<br /> 水绿色 = 42,<br /> 浅蓝 = 41,<br /> 紫罗兰 = 13,<br /> 灰色40 = 48,<br /> 粉红 = 7,<br /> 金色 = 44,<br /> 黄色 = 6,<br /> 鲜绿 = 4,<br /> 青绿 = 8,<br /> 天蓝 = 33,<br /> 梅红 = 54,<br /> 灰色25 = 15,<br /> 玫瑰红 = 38,<br /> 茶色 = 40,<br /> 浅黄 = 36,<br /> 浅绿 = 35,<br /> 浅青绿 = 34,<br /> 淡蓝 = 37,<br /> 淡紫 = 39,<br /> 白色 = 2<br /> }<br />}
