一个简单的Excel操作类
2013-04-17 13:51
155 查看
1.先添加引用:Microsoft.Office.Interop.Excel;
2.下面是类的源码,如果有什么写得不对不有所欠缺的地方,还希望指证
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 }
相关文章推荐
- 应有那个数据库操作类的一个简单实例
- 一个简单的excel文件上传到数据库方法
- 一个POI操作Excel简单例子
- 一个简单的数据库操作类、封装了一些简单的操作
- ExcelUtil,一个简单封装的excel解析和生成类
- XLSTransformer生成excel一个简单的演示示例文件
- 一个简单的数据库操作类
- 一个简单的数据库操作类
- 发布一个简单小巧的ajax操作类
- 一个简单的asp数据库操作类
- 在PowerShell中操作Excel - 创建一个简单的报表
- html jsp 页面 表格保存为word,excel的一个简单办法
- 一个比较容易调用 功能比较完善的 cookie 操作类 附带一些简单的应用示例
- 一个简单的日期操作类
- 一个简单的MongoDB操作类
- IOS开发之文件操作(一个简单的文件操作类)
- 【造轮子】打造一个简单的万能Excel读写工具
- 一个简单的数据库操作类
- 一个能自由切换字符验证和简单数学运算验证方式的 验证码操作类
- 一个简单的Cookie得操作类(java)