.Net操作Office总结一 - 使用VS2010自带的Office模板进行开发
一 创建Office项目
新建项目,出现 “新建项目”对话框。
在对话框顶部的组合框中,选择 “.NET Framework 3.5”或 “.NET Framework 4”。
在“模板”窗格中想要使用的语言节点下,展开 “Office”。
选择 “2010”或 “2007”节点。
在项目模板的列表中,出现各种Office模板;可根据需要选择,如下图;
二 创建一个 Excel 文档级自定义项
在项目模板列表中,选择 “Excel 2007 工作簿”或 “Excel 2010 工作簿”;出现下图;输入文档名称;
出现下图,点确定;
可以通过修改在设计器中打开的工作表来设计自定义项的用户界面 (UI)。例如,可以向单元格添加文本、应用公式或添加 Excel 控件;如下图;
以编程方式向工作表中添加文本
用下面的代码替换 Sheet1_Startup 事件处理程序。 Sheet1 打开后,此代码便会向此工作表中添加第二行文本。
private void Sheet1_Startup(object sender, System.EventArgs e)
{
Microsoft.Office.Tools.Excel.NamedRange nr =
this.Controls.AddNamedRange(this.Range["A2", missing], "NamedRange1");
nr.Value2 = "此文本由代码添加";
}
运行程序,自动打开Excel并显示如下内容;
清理项目;完成项目的开发后,应移除生成输出文件夹中的文件和生成过程创建的安全设置。
在 Visual Studio 的 “生成”菜单中,单击 “清理解决方案”。
三 创建一个 Excel 应用程序级外接程序
新建项目,在项目模板列表中,选择 “Excel 2007 外接程序”或 “Excel 2010 外接程序”。
编写用于向保存的工作簿中添加文本的代码
在 ThisAddIn 代码文件中,将下面的代码添加到 ThisAddIn 类中。
void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
{
Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
Excel.Range firstRow = activeWorksheet.get_Range("A1", missing);
firstRow.EntireRow.Insert(Excel.XlInsertShiftDirection.xlShiftDown, System.Type.Missing);
Excel.Range newFirstRow = activeWorksheet.get_Range("A1", missing);
newFirstRow.Value2 = "Excel是个好东西";
}
以下代码添加到 ThisAddIn_Startup 事件处理程序中。
this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave);
运行,结果如下图;单击 保存 按钮时,在程序中添加的文本出现在Excel中。
四 在运行时在应用程序级项目中向工作表中添加控件
在 “项目”菜单上,单击 “添加新项”;
在 “添加新项”对话框中,选择 “功能区(可视化设计器)”,再单击 “添加”;
名为 Ribbon1.cs 的文件将在功能区设计器中打开,并显示一个默认选项卡和组;
从 “工具箱”的 “Office 功能区控件”选项卡中将 CheckBox 控件拖到 “group1”上;如此添加三个CheckBox;
并把其名称和Text属性改为:Button,Button;NamedRange,NamedRange;ListObject,ListObject
并把其名称和Text属性分别改为:Button,Button;NamedRange,NamedRange;ListObject,ListObject
操作过程如下三图所示;
为Button控件添加如下代码,其他两个CheckBox类似;
private void Button_Click(object sender, RibbonControlEventArgs e)
{
Worksheet worksheet = Globals.Factory.GetVstoObject(
Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);
string buttonName = "MyButton";
if (((RibbonCheckBox)sender).Checked)
{
Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;
if (selection != null)
{
Microsoft.Office.Tools.Excel.Controls.Button button =
new Microsoft.Office.Tools.Excel.Controls.Button();
worksheet.Controls.AddControl(button, selection, buttonName);
}
}
else
{
worksheet.Controls.Remove(buttonName);
}
}
引用如下的命名空间;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Tools.Excel.Extensions;
如果 using Microsoft.Office.Tools.Excel.Extensions;
出错;
手动添加引用:
C:\Program Files\Reference Assemblies\Microsoft\VSTO40\v4.0.Framework\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll
将下面的方法添加到 ThisAddIn 类中。
void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook workbook,
bool SaveAsUI, ref bool Cancel)
{
Excel.Worksheet worksheet =
workbook.Worksheets[1] as Excel.Worksheet;
if (Globals.Factory.HasVstoObject(worksheet) &&
Globals.Factory.GetVstoObject(worksheet).Controls.Count > 0)
{
Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(worksheet);
while (vstoWorksheet.Controls.Count > 0)
{
object vstoControl = vstoWorksheet.Controls[0];
vstoWorksheet.Controls.Remove(vstoControl);
}
}
}
用下面的代码替换 ThisAddIn_Startup 方法。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookBeforeSave +=
new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler
(Application_WorkbookBeforeSave);
}
运行,结果如下图;
选择 Sheet1 中的任何单元格;单击 选择 加载项 选项卡;
在 “group1”组中,单击 “Button”,一个按钮显示在所选单元格中;
选择 Sheet1 中的另一个单元格,在 “group1”组中,单击 “NamedRange”,将为所选单元格定义一个命名区域;
选择 Sheet1 中的一系列单元格,在 “group1”组中,单击 “ListObject”,将为所选单元格添加一个列表对象。
五 创建一个 PowerPoint 应用程序级外接程序
新建项目,在项目模板列表中,选择 “PowerPoint 2007 外接程序”或 “PowerPoint 2010 外接程序”。
编写向每张新幻灯片中添加文本的代码
将下面的代码添加到 ThisAddIn 类中。
当用户将新幻灯片添加到活动演示文稿时,此事件处理程序会将文本框添加到新幻灯片的顶部,然后向文本框中添加一些文本。
void Application_PresentationNewSlide(PowerPoint.Slide Sld)
{
PowerPoint.Shape textBox = Sld.Shapes.AddTextbox(
Office.MsoTextOrientation.msoTextOrientationHorizontal, 0, 0, 500, 50);
textBox.TextFrame.TextRange.InsertAfter("此文本由代码生成.");
}
将以下代码添加到 ThisAddIn_Startup 事件处理程序中。
this.Application.PresentationNewSlide +=
new PowerPoint.EApplication_PresentationNewSlideEventHandler(
Application_PresentationNewSlide);
运行程序,文本添加到幻灯片顶部的新文本框中,如下图;
六 创建一个 Word 文档级自定义项
新建项目,选择 “Word 2007 文档”或 “Word 2010 文档”,或 Word 2010 模板;
可以通过修改在设计器中打开的文档来设计自定义项的用户界面 (UI)。例如,可以添加文本、表或 Word 控件;
以编程方式向文档中添加文本
用下面的代码替换 ThisDocument_Startup 事件处理程序;
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
this.Paragraphs[1].Range.InsertParagraphAfter();
this.Paragraphs[2].Range.Text = "此文本由代码生成";
}
运行程序,文档中出现由代码添加的文本,如下图;
七 运行时在应用程序级外接程序中向文档添加控件
首先创建 Word 外接程序项目;
提供用于向文档添加控件的 UI;
在 “项目”菜单上,单击 “添加新项”;
在 “添加新项”对话框中,选择 “功能区(可视化设计器)”;单击 “添加”;
在功能区设计器中,单击 “group1”组;
将 “group1”的 “Label”属性更改为“添加控件”;
从 “工具箱”的 “Office 功能区控件”选项卡中将 “CheckBox”控件拖到 “group1”上,更改其名称和Text属性为addButtonComboBox和 添加按钮 ;
向 “group1”再添加一个复选框,更改其名称和Text属性为addRichTextCheckBox和添加多格式文本控件;
将下面的代码添加到 ThisAddIn 类中;
private Microsoft.Office.Tools.Word.Controls.Button button = null;
private RichTextContentControl richTextControl = null;
将下面的方法添加到 ThisAddIn 类中;
internal void ToggleButtonOnDocument()
{
Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
string name = "MyButton";
if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked)
{
Word.Selection selection = this.Application.Selection;
if (selection != null && selection.Range != null)
{
button = vstoDocument.Controls.AddButton(
selection.Range, 100, 30, name);
}
}
else
{
vstoDocument.Controls.Remove(name);
}
}
将下面的方法添加到 ThisAddIn 类中;当用户单击功能区中的“添加多格式文本控件”复选框时,如果选中了该复选框,此方法会向文档中的当前选定内容中添加一个 RichTextContentControl;如果清除了该复选框,此方法会移除 RichTextContentControl;
internal void ToggleRichTextControlOnDocument()
{
Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
string name = "MyRichTextBoxControl";
if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked)
{
Word.Selection selection = this.Application.Selection;
if (selection != null && selection.Range != null)
{
richTextControl = vstoDocument.Controls.AddRichTextContentControl(
selection.Range, name);
}
}
else
{
vstoDocument.Controls.Remove(name);
}
}
在 ThisAddIn.cs 中,将下面的方法添加到 ThisAddIn 类中
private void Application_DocumentBeforeSave(Word.Document Doc,
ref bool SaveAsUI, ref bool Cancel)
{
bool isExtended = Globals.Factory.HasVstoObject(Doc);
if (isExtended)
{
Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc);
if (vstoDocument.Controls.Contains(button))
{
vstoDocument.Controls.Remove(button);
Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false;
}
}
}
将下面的代码添加到 ThisAddIn_Startup 事件处理程序中;
this.Application.DocumentBeforeSave +=
new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(
Application_DocumentBeforeSave);
在Ribbon.cs 或 MyRibbon.vb 代码文件中,将生成的 addButtonCheckBox_Click 和 addRichTextCheckBox_Click 事件处理程序替换为下面的代码;
private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.ToggleButtonOnDocument();
}
private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.ToggleRichTextControlOnDocument();
}
运行程序;在Word文档中,多次按 Enter 以向文档添加新的空段落;
选择一个段落;选择 加载项 选项卡;
在 “添加控件”组中,单击 “添加按钮”,一个按钮随即显示在第一个段落中;
选择最后一个段落,在 “添加控件”组中,单击 “添加多格式文本控件”;一个多格式文本内容控件随即添加到最后一个段落中;
如下图所示;
以上项目的源码下载:
http://pan.baidu.com/s/1eQy9RPK
需要安装VS2010和Office 2010,才能运行;若装的是Office 2007,按上述步骤操作,把模板类型改为Office 2007类型;
.Net操作Office总结一 - 使用VS2010自带的Office模板进行开发相关推荐
- 未来教育计算机二级Excel解析,Excel操作小技巧,助你学好计算机二级office!
原标题:Excel操作小技巧,助你学好计算机二级office! Office考试中最难的是什么?当然是Excel函数啊! 小编辛苦整理了excel10大懒人技巧,让你考试速提分!还不赶紧收藏起来 一. ...
- python office库使用_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...
一.导读 大家好,今天依旧是Python办公自动化基础系列,在之前我们分别详细讲解了 今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位--PPT. 二.安装 ...
- python实践答辩ppt_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶没压力!...
看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶没压力!一.导读大家好,今天依旧是Python办公自动化基础系列,在之前我们分别详细讲解了
- python开发office插件_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...
一.导读 大家好,今天依旧是Python办公自动化基础系列,在之前我们分别详细讲解了 今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位--PPT. 二.安装 ...
- python的ppt报告_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...
一.导读 大家好,今天依旧是Python办公自动化基础系列,在之前我们分别详细讲解了 今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位--PPT. 二.安装 ...
- word公式插件_全套office零基础视频教程|200集视频+插件+模板,免费送!
全套office零基础视频教程|200集视频+插件+模板,免费送! 大学生.教师.职员进入职场的基础技能有Word,Excel,PPT.这几个软件不能局限于基础功能操作,还要能熟练的设计.表格美化界面 ...
- office实操技能01:修改微软Office页面的(非背景的)浅绿底色、设置默认字体和主题颜色、取消页眉横线、PPT默认的等线字体
目录 1 处理word中默认中文字体是等线的问题 2 处理word中没有设置背景色,但页面底色是浅绿色的问题 3 修改office的主题颜色 4 删除页眉横线 5 处理PPT中的等线字体 这篇博文主要 ...
- 计算机上装的word怎么卸载,电脑残留Office无法重新安装如何解决|电脑完全卸载Office的方法...
我们知道在电脑中如果存在之前安装版本的软件,那么很有可能会导致软件重新安装失败.如果想要成功安装软件,必须要完全卸载之前版本的软件.这对于微软Office系列办公软件来说也是一样的,接下来介绍通过官 ...
- office移动端_微软推出移动端office三合一版 相比WPS哪个更好?我对比了一下
最近,微软终于正式上线了其在移动端的三合一office客户端,摆脱了以往想用office办公软件需要分别下载word.excel.powerpoint三个独立应用的情况.而老对手金山早已在移动端深耕多 ...
- 信息学奥赛一本通 1227:Ride to Office | OpenJudge NOI 4.6 2404:Ride to Office
[题目链接] ybt 1227:Ride to Office OpenJudge NOI 4.6 2404:Ride to Office 原题是英文题,虽说两题题意相同,但一本通网站没有对该问题进行直 ...
最新文章
- 记录由Equal基础知识引起的内存泄露
- 河北传媒学院计算机专业分数线,河北传媒学院2019年各省各专业录取分数
- swift 字符串中查找字符位置
- what happened after a template is selected in Create with template button
- Git 初始化版本库
- C# 二维码的生成 Open Source QRCode Library
- php thinkphp重定向,ThinkPHP框架让页面重定向方法总结
- MVC 下拉列表三级联动
- python 类初始化函数_C类初始化函数
- 5G通信网络专题报告:新一轮移动通信网络建设迎来高潮
- Android官方模拟器安装
- 如何搭建一个可以搜题的微信公众号?完整教程
- 计算机要重启电脑才能检测出u盘启动,u盘要电脑重启才能用
- 元数据与数据治理|apache-atlas2.0.0 源码编译和安装部署(CHD版本)
- v-charts组件化示例及动态传参
- Web安全之认证机制
- 解决:mmc0: error -110 whilst initialising SD card.md
- CSDN博客放阿里妈妈广告代码的方法
- MobileNetV2网络结构分析
- Android 天气APP(三十四)语音搜索