VSTO:C#获取文档控件的值

时间:2023-01-12 17:28:41
基础知识准备:
 
 string[] inputfileNames = { @"C:\1.xls", @"C:\2.xls" };
inputfileName=inputfileNames [];
Excel.Workbook myWorkbook = app.Workbooks.Open(inputfileName, Type.Missing, true, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing);//创建myWorkbook Excel.Sheets mySheets = myWorkbook.Worksheets;
Excel.Worksheet myWorksheet = mySheets.get_Item() as Excel.Worksheet;
Excel.CheckBoxes chxsBoxes = (Excel.CheckBoxes) myWorksheet.CheckBoxes(Type.Missing);//获取CheckBox控件
Dictionary<int, Excel.CheckBox> dict = new Dictionary<int, Excel.CheckBox>();

附录:

1、checkbox 默认值:Value为-4146,选中时为1

office中对应的控件添加操作为:

VSTO:C#获取文档控件的值

2、如果导航中找不到开发工具选项office2013中可做如下操作:

文件→选项

VSTO:C#获取文档控件的值

Update ---------------------------2017年4月17日 09:58:42----------------------

之前把所有的参数都写死,这样程序不够灵活,所以想着能不能把参数作为配置文件的形式传进来,但是效果都不理想,今天想到既然可以读取单元格的值,那我为什么不把参数写在单元格中呢?(这真是一个好主意)

VSTO:C#获取文档控件的值

 private void button1_Click(object sender, EventArgs e)
{
Excel.Application app = new Excel.Application(); //打开一个excel文件,open方法的参数大家可以去msdn上查询
Excel.Range r1 = this.Range["B2", missing];
Excel.Range r2 = this.Range["B3", missing];
string filepath = r1.Text;//文件夹路径
string tablename = r2.Text;//更新的表名 DirectoryInfo folder = new DirectoryInfo(filepath); foreach (FileInfo file in folder.GetFiles("*.xls"))
{
ExportValue(app, file,tablename);//你要执行的操作
}
}

这样是不是很灵活了呢?

下载源码