C# 开发excel addin插件的小积累

本文分享了使用C#开发Excel Add-in时的一些关键操作,包括工作簿、工作表和单元格的处理,图表和数据透视表的生成与修改,进程结束,数据写入及排序,事件触发与禁止,以及错误处理。通过实例展示了如何解决开发过程中的常见问题。
摘要由CSDN通过智能技术生成

好吧,进园子这么长时间了,第一次写博文,欢迎拍砖!

关于excel的一些基本操作:

1、引用

开发excel插件,这两个引用是必不可少的。

using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Tools.Ribbon;

2、 工作簿、工作表、单元格的操作

ApplicationClass application = new ApplicationClass(); //创建一个excel进程
Workbook wbook = Globals.ThisAddIn.Application.ActiveWorkbook; //当前活动workbook
Worksheet worksheet = (Worksheet)wbook.ActiveSheet; //当前活动sheet
Range range = (Range)worksheet.Application.Selection;//当前选中的cells

根据条件选择指定的sheet:

Worksheet worksheet = wbook.Worksheets["sheet1"];//获取名为sheet1的工作表
Worksheet worksheet = wbook.Worksheets[1];//获取第一个工作表

其他的操作:

workSheet.Range[workSheet.Cells[range.Row,1],workSheet.Cells[workSheet.UsedRange.Rows.Count,workSheet.UsedRange.Columns.Count]].Clear();//清除当前选定行以下的所有数据
workSheet.UsedRange.Rows.Count//已使用的行数
workSheet.UsedRange.Columns.Count//已使用的列数
worksheet.Range["A1"].Font.ColorIndex = 3;//将“A1”单元格字体设为红色
worksheet.Range["A1","B2"].Interior.ColorIndex = 3; //将“A1”到“B2”范围背景设为红色
int num = wss1.Range[wss1.Cells[1, Y1]].Find("").Row; //第一次出现空单元格的行数
worksheet.Cells["A1"].Rows.Hidden=true;//隐藏行
worksheet.Cells["A1"].Columns.Hidden=true;//隐藏列
View Code

range与cells的区别不大,最重要的事range的范围比cells大;

当然,用C#遍历所有单元格时若遇到空单元格,有可能会弹出“无法对null执行运行时绑定”,此时对单元格判断是否为空并用正则表达式匹配数字,然后比较大小的方法(将所有小于6的数字字体设为红色):

1 string str = Convert.ToString(worksheet.Cells[i, j].value);
2 string regex = @"^[1-9]\d*|0$";
3 if (str != null && Regex.IsMatch(str, regex))
4 {
5      if (Convert.ToDouble(str) < 6)
6      {
7         worksheet.Cells[i, j].Font.ColorIndex = 3;
8      }
9 }
View Code

3、 图表生成

(1)以下是生成柱状图的方法(绑定数据的两种方法,一种是连续绑定数据,数据是连续的;另一种是部分绑定,数据是不连续的):

 1 wbook.Charts.Add(Type.Missing); //添加一個页面
 2 wbook.ActiveChart.ChartType = XlChartType.xlColumnClustered; //设置要显示的图表样式(簇状条形图)      
 3 Range rang = worksheet.get_Range(strx + "," + stry);
 4 wbook.ActiveChart.SetSourceData(rang, XlRowCol.xlColumns);//数据不连续
 5 //wbook.ActiveChart.SetSourceData(ws.Range["A1",ws.Cells[ws.UsedRange.Rows.Count,ws.UsedRange.Columns.Count]], XlRowCol.xlRows);//绑定数据,数据是连续的
 6 //wbook.ActiveChart.SetSourceData(ws.Range["A1","A40"], XlRowCol.xlColumns);//绑定数据,柱状图中图柱所代表的数据
 7 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值