Excel操控方法之Com组件
来源:互联网 发布:金贵软件官网 编辑:程序博客网 时间:2024/05/14 05:39
using Microsoft.Office.Interop.Excel;using System;using System.Diagnostics;using System.Drawing;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Windows.Forms;namespace ComTest{ public class MSExcel { //Excel重要元素节点 private Microsoft.Office.Interop.Excel.Application app; private Workbooks workbooks; private Workbook workbook; private string excelPath; public MSExcel(string excelPath) { init(); this.excelPath = excelPath; } //Excel private void init() { app = new Microsoft.Office.Interop.Excel.Application(); app.Visible = false; workbooks = app.Workbooks; } //载入Excel public bool LoadExcel() { workbook = workbooks.Open(excelPath); return !workbook.ReadOnly; } //创建Excel public void CreateExcel(string worksheetName) { workbook = workbooks.Add(true); ((Worksheet)workbook.Worksheets[1]).Name = worksheetName; workbook.SaveAs(excelPath); } //强制杀掉Excel的所有进程 public void KillExcel() { Close(); Dispose(); Process[] procs = Process.GetProcessesByName("excel"); foreach (Process pro in procs) { pro.Kill(); } init(); LoadExcel(); Save(); Close(); Dispose(); init(); LoadExcel(); } //判断指定名称的工作表是否存在 public bool IsWorksheetExist(string worksheetName) { foreach (Worksheet worksheet in workbook.Worksheets) { if (worksheet != null && worksheet.Name != null && worksheet.Name == worksheetName) { return true; } } return false; } //添加指定名称工作表 public void AddWorksheet(string worksheetName) { workbook.Worksheets.Add(Type.Missing, workbook.Worksheets[workbook.Worksheets.Count], 1, Type.Missing); ((Worksheet)workbook.Worksheets[workbook.Worksheets.Count]).Name = worksheetName; workbook.Save(); } //获取指定名称的工作表 public Worksheet GetWorksheet(string worksheetName) { foreach(Worksheet worksheet in workbook.Worksheets) { if(worksheet!=null && worksheet.Name!=null && worksheet.Name==worksheetName) { return worksheet; } } return null; } //Excel文档保存 public void Save() { workbook.Save(); } //Excel文档另存为 public void SaveAs() { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "excel files (*.xls)|*.xls"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { workbook.SaveCopyAs(saveFileDialog.FileName); } } //关闭Excel文档 public void Close() { if (workbook != null) { workbook.Close(); workbook = null; } } //释放当前Excel进程 public void Dispose() { if (workbooks != null) { workbooks.Close(); workbooks = null; } if (app != null) { app.Quit(); app = null; } } public class MSSheet { private Worksheet worksheet; private int lastRow = 1; private int lastCol = 1; public int MaxRow { get { return worksheet.UsedRange.Rows.Count; } } public MSSheet(Worksheet worksheet) { this.worksheet = worksheet; lastRow = worksheet.UsedRange.Rows.Count; string value = null; for (int i = worksheet.UsedRange.Columns.Count; i > 0; i++) { value = ((Range)(worksheet.Cells[1, i])).Text.ToString(); if (value != null || value != "") { lastCol = i; break; } } } //根据指定名称寻找第一行中与之内容相同的表格所在的列 public int GetColIndexByHeaderName(string colName) { int count = worksheet.UsedRange.Columns.Count + 1; for (int i = 1; i < count; i++) { if (((Range)(worksheet.Cells[1, i])).Text.ToString() == colName) { return i; } } worksheet.Cells[1, count] = colName; return count; } //添加一行 public void AddRow() { lastRow += 1; } //添加一个元素 public void AddCell(object data) { lastCol += 1; write(lastRow, lastCol, false, data, Color.Transparent); } //添加一个指定背景颜色的元素 public void AddCell(object data,Color color) { lastCol += 1; write(lastRow, lastCol, false, data, color); } //添加一个超链接 public void AddHyperlink(object data) { lastCol += 1; write(lastRow, lastCol, true, data, Color.Transparent); } //添加一个指定背景颜色的超链接 public void AddHyperlink(object data, Color color) { lastCol += 1; write(lastRow, lastCol, true, data, color); } //指定行和列确定表格位置,写入内容 public void Write(int rowIndex, int colIndex, object data) { write(rowIndex, colIndex, false, data, Color.Transparent); } //指定行和列确定表格位置,指定背景颜色写入内容 public void Write(int rowIndex, int colIndex, object data, Color color) { write(rowIndex, colIndex, false, data, color); } //指定行和列确定表格位置,写入超链接 public void WriteHyperlink(int rowIndex, int colIndex, object data) { write(rowIndex, colIndex, true, data, Color.Transparent); } //指定行和列确定表格位置,指定背景颜色写入超链接 public void WriteHyperlink(int rowIndex, int colIndex, object data, Color color) { write(rowIndex, colIndex, true, data, color); } //写 private void write(int rowIndex, int colIndex, bool isHyperlink, object data, Color color) { Range range = (Range)worksheet.Cells[rowIndex, colIndex]; if (isHyperlink) { worksheet.Hyperlinks.Add(range, data.ToString()); } else { range.Value2 = data.ToString(); } if (color != Color.Transparent) { range.Interior.Color = System.Drawing.ColorTranslator.ToOle(color); } } //读 public string Read(int rowIndex, int colIndex) { return ((Range)(worksheet.Cells[rowIndex, colIndex])).Text.ToString(); } } }}
0 0
- Excel操控方法之Com组件
- 使用COM组件操控Excel
- 使用COM组件实现对Excel文件的操控
- 使用COM组件实现对Excel文件的操控
- 使用COM组件实现对Excel文件的操控
- 面向对象方法学之COM组件
- .Net之路(十四)com组件、OLEDB导入EXCEL
- C# COM组件操作Excel
- c#中转出Excel时碰到Excel的COM组件没有注册的问题解决方法
- 调用COM组件方法
- COM+组件注册方法
- COM 组件注册方法
- COM组件调用方法
- COM+组件注册方法
- EXCEL的操控框架
- java操控Excel表格
- JAVA POI 操控Excel
- COM组件之HRESULT
- Cocos开发VR菜鸟宝典 第八讲:为GearVR开发一款深海捕鱼VR游戏
- 在Linux下禁用键盘、鼠标、触摸板(笔记本)等输入设备
- ARM、Intel、MIPS处理器啥区别?看完全懂了
- 回答“漠北黑夜”同学的问题——怎么实现切片shader?
- 人人都看得懂的正则表达式教程
- Excel操控方法之Com组件
- QTP 中实现对象高亮
- Ubuntu gedit中文出现乱码解决方法
- 单向链表每k个数逆序拼接
- js鼠标右键禁止
- windows7开启远程桌面及修复IE
- ffmpeg基本用法
- js查找字符串出现最多字符
- effective java