您的位置:首页 > 其它

一个简单的Excel操作类

2013-04-17 13:51 155 查看
1.先添加引用:Microsoft.Office.Interop.Excel;

using Excel = Microsoft.Office.Interop.Excel;


2.下面是类的源码,如果有什么写得不对不有所欠缺的地方,还希望指证

/// <summary>
/// Excel 操作类
/// </summary>
public class ExcelHelper
{
#region 属性
/// <summary>
/// Excel主应用
/// </summary>
private Excel.Application ExcelApp;

/// <summary>
/// Excel工作簿
/// </summary>
private Excel.Workbook WorkBook;

/// <summary>
/// Excel工作表
/// </summary>
private Excel.Worksheet WorkSheet;
#endregion

#region 构造函数
/// <summary>
/// 构造函数
/// </summary>
public ExcelHelper()
{
if (ExcelApp == null)
{
ExcelApp = new Excel.Application();
}
ExcelApp.DisplayAlerts = false;//设置默认应答
}
#endregion

#region 操作方法
/// <summary>
/// 打开Excel文件
/// </summary>
/// <param name="path">路径</param>
public void OpenExcelFile(string path)
{
OpenExcelFile(path, true);
}

/// <summary>
/// 打开Excel文件
/// </summary>
/// <param name="path">路径</param>
/// <param name="readonlyflag">是否为只读</param>
public void OpenExcelFile(string path, bool readonlyflag)
{
if (File.Exists(path))
{
WorkBook = ExcelApp.Workbooks.Open(path, Type.Missing, readonlyflag, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
}

/// <summary>
/// 默认取当前工作表
/// </summary>
public void SelectSheet()
{
WorkSheet = (Excel.Worksheet)WorkBook.ActiveSheet;
}

/// <summary>
/// 定位Sheet名称
/// </summary>
/// <param name="sheetname">Sheet名称</param>
public void SelectSheet(string sheetname)
{
WorkSheet = (Excel.Worksheet)WorkBook.Sheets[sheetname];
}

/// <summary>
/// 获取工作表总数
/// </summary>
public int GetSheetCount()
{
return WorkBook.Sheets.Count;
}

/// <summary>
/// 获取工作表行数
/// </summary>
/// <returns></returns>
public int GetRowCount()
{
return WorkSheet.UsedRange.Rows.Count;
}

/// <summary>
/// 获取工作表列数
/// </summary>
/// <returns></returns>
public int GetColumnCount()
{
return WorkSheet.UsedRange.Columns.Count;
}

/// <summary>
/// 获取工作表名
/// </summary>
public string GetSheetName()
{
Excel.Worksheet sheet = (Excel.Worksheet)WorkBook.ActiveSheet;
return sheet.Name;
}

/// <summary>
/// 将工作表复制到工作簿中的最后位置
/// </summary>
public void CopyWorkSheet()
{
WorkSheet.Copy(Type.Missing, WorkBook.Sheets[GetSheetCount()]);
}

/// <summary>
/// 单元格内容设定
/// </summary>
/// <param name="row">行坐标</param>
/// <param name="col">列坐标</param>
/// <param name="value">设定值</param>
public void SetCellValue(int row, int col, string value)
{
if (row <= 65528)
{
WorkSheet.Cells[row, col] = value;
}
}

/// <summary>
/// 获取单元格的内容
/// </summary>
/// <param name="row">行坐标</param>
/// <param name="col">列坐标</param>
/// <returns>内容</returns>
public string GetCellValue(int row, int col)
{
if (row <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.Cells[row, col];
if (range.Text == null)
return string.Empty;
else
return range.Text.ToString();
}
else
{
return string.Empty;
}
}

/// <summary>
/// 设置字体颜色
/// </summary>
/// <param name="row">行坐标</param>
/// <param name="col">列坐标</param>
/// <param name="color">颜色</param>
public void SetFontColor(int row, int col, Color color)
{
if (row <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.Cells[row, col];
range.Font.Color = color;
}
}

/// <summary>
/// 设置字体颜色
/// </summary>
/// <param name="startrow">行坐标 开始</param>
/// <param name="endrow">行坐标 结束</param>
/// <param name="startcol">列坐标 开始</param>
/// <param name="endcol">列坐标 结束</param>
/// <param name="color">颜色</param>
public void SetFontColor(int startrow, int endrow, int startcol, int endcol, Color color)
{
if (startrow <= 65528 && endrow <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.get_Range(WorkSheet.Cells[startrow, startcol], WorkSheet.Cells[endrow, endcol]);
range.Font.Color = color;
}
}

/// <summary>
/// 设置背景颜色
/// </summary>
/// <param name="row">行坐标</param>
/// <param name="col">列坐标</param>
/// <param name="color">颜色</param>
public void SetBackColor(int row, int col, Color color)
{
if (row <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.Cells[row, col];
range.Interior.Color = color;
}
}

/// <summary>
/// 设置背景颜色
/// </summary>
/// <param name="startrow">行坐标 开始</param>
/// <param name="endrow">行坐标 结束</param>
/// <param name="startcol">列坐标 开始</param>
/// <param name="endcol">列坐标 结束</param>
/// <param name="color">颜色</param>
public void SetBackColor(int startrow, int endrow, int startcol, int endcol, Color color)
{
if (startrow <= 65528 && endrow <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.get_Range(WorkSheet.Cells[startrow, startcol], WorkSheet.Cells[endrow, endcol]);
range.Interior.Color = color;
}
}

/// <summary>
/// 设置行高
/// </summary>
/// <param name="row">行坐标</param>
/// <param name="height">高度</param>
public void SetRowHeight(int row, int height)
{
if (row <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.Cells[row, GetColumnCount()];
range.RowHeight = height;
}
}

/// <summary>
/// 设置行高
/// </summary>
/// <param name="startrow">行坐标 开始</param>
/// <param name="endrow">行坐标 结束</param>
/// <param name="height">行高</param>
public void SetRowHeight(int startrow, int endrow, int height)
{
if (startrow <= 65528 && endrow <= 65528)
{
Excel.Range range = (Excel.Range)WorkSheet.get_Range(WorkSheet.Cells[startrow, GetColumnCount()],
WorkSheet.Cells[endrow, GetColumnCount()]);
range.RowHeight = height;
}
}

/// <summary>
/// 设置工作表名称
/// </summary>
/// <param name="oldname">旧表名</param>
/// <param name="newname">新表名</param>
public void SetSheetName(string oldname, string newname)
{
Excel.Worksheet sheet = (Excel.Worksheet)WorkBook.Sheets[oldname];
if (!oldname.Equals(newname))
{
if (!CheckSheetName(newname))
sheet.Name = newname;
}
}

/// <summary>
/// 判断工作表名是否存在
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private bool CheckSheetName(string name)
{
foreach (Excel.Worksheet sheet in WorkBook.Sheets)
{
if (sheet.Name.Equals(name))
return true;
}
return false;
}

/// <summary>
/// 删除工作表
/// </summary>
/// <param name="name">表名</param>
public void DeleteSheet(string name)
{
Excel.Worksheet sheet = (Excel.Worksheet)WorkBook.Sheets[name];
sheet.Delete();
}

/// <summary>
/// 保存工作簿
/// </summary>
public void Save()
{
WorkBook.Save();
}

/// <summary>
/// 保存
/// </summary>
/// <param name="path">路径,不包含文件名</param>
public void SaveAs(string path)
{
string name = DateTime.Now.ToString("yyyyMMddHHmmssffff");
SaveAs(path, name);
}

/// <summary>
/// 保存
/// </summary>
/// <param name="path">路径,不包含文件名</param>
/// <param name="name">文件名</param>
public void SaveAs(string path, string name)
{
WorkBook.SaveAs(path + "\\" + name, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}

/// <summary>
/// 关闭工作簿
/// </summary>
public void Close()
{
CloseWorkBook();
GC.Collect();
}

/// <summary>
/// 关闭工作簿
/// </summary>
private void CloseWorkBook()
{
if (WorkSheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(WorkSheet);
WorkSheet = null;
}

if (WorkBook != null)
{
WorkBook.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(WorkBook);
WorkBook = null;
}

GC.Collect();
}

/// <summary>
/// 退出
/// </summary>
public void ExitApp()
{
ExitApplication();
GC.Collect();
}

/// <summary>
/// 退出
/// </summary>
private void ExitApplication()
{
CloseWorkBook();
ExcelApp.Quit();
if (ExcelApp != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp);
ExcelApp = null;
}
}

#endregion
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: