VSTO Excel编程 急…. 参与解答后再加分
this.Rang[].Validata.Remove()
怎样使用VSTO刷新Excel表格数据
应该是不行的,你这些vsto或者vba进行操作的时候,其实就是后台对EXCEL文件本身进行了修改。 而撤销这个操作实际是建立在用户操作上的。
也就是说,原生的撤销功能,实际是从EXCEL打开开始监视用户的输入以及EXCEL的输出,
记录下每一步操作(如果你显示隐藏文件的话,在.XLSX文件旁边,会看到有一个临时文件的生成),当你Ctrl+Z的时候,就回滚上一步的操作。
但是使用VBA或者VSTO的时候,由于是代码在执行,所以EXCEL是不记录每一步的操作内容的,
如果仍需要这个功能,可以把撤销功能也重写一下,
思路很简单,监视每一步用户的输入(原生撤销)
并记录你VSTO按键的操作功能,逆向运行,
这样就可以将你代码执行的操作进行还原了。
vsto如何给单元格赋值
以下语句可以运行正常. ActiveCell通过Application这个对象来访问. Globals.Sheet1.Application.ActiveCell.Value = 1 Globals.ThisWorkbook.Application.ActiveCell.Value = 1
VSTO也是VBA的替代,十分感谢,我想是可以学习一下!请问如何快速入门,解决我的问题,谢谢
给你推荐几本书,都能找到pdf版,如果熟悉C#或VB.Net的话,VSTO很好学的,大约一个星期就够,你那个东西应该还不用一个星期.1.VSTO for Mere Mortals 2.Wrox.Professional.VSTO.2005.Visual.Studio.2005.Tools.for.Office.May.20053.professional_office_business_application_development.97949949314.VSTO 3.0 for Office 2007 Programming
制作word插件的方法中VSTO算是简单的么
其实VSTO插件的部署无非就是Prerequisites和grant full trust (因为注册表是模板帮我们处理好的,我们不需要去关心,下文有详述)。上面的两篇文章为了一步到位的解决好以上两个问题,并打包.msi文件,用了一些技术。一,给Setup项目添加prerequisites,并且使用launch condition来要求用户在安装setup.exe前必须保证所有的prerequisites都已经安装在目标机器上;二,利用Custom Action在安装过程完成后,调用caspol工具来设置程序集的权限。
第一篇文章讲解了各个技术点,第二篇文章通过具体的例子来完成两种类型项目的部署,并且提供了一个Sample,里面包含了要用到一些工程,如SetSecurity。例子就是引用这个工程做为Custom Action来设置权限的。
与上两者不同的是,本文抛开所有这些技术不看,仅仅打包一个最最简单的.msi文件,把prerequisites和grant trust的事情,留待插件安装完再去人工做。希望如此,能给在VSTO项目部署时遇到困难的人一个直观的印象,让大家看到VSTO项目要运行,其实就是这么几个东西。然后回头再看Microsoft提供的这两篇文章,幸许又会有另外的收获。
一.概述
如果你的VSTO SE插件在开发机器上工作良好,一旦装到客户机上,就不再装载了。可能的原因无非就是一下几种:(在此排除了软禁用,硬禁用的情况)
1.一些prerequisites没有装:
a. .NET Framework (这是所有.NET应用程序运行的必备,没有什么好说的。如果我们用VSTO SE开发的插件,我们应该在客户机上装上.NET 2.0以上的版本)
b. Office PIAs(这是连接.NET和Office COM的桥梁,CLR通过它来操作Office的COM对象,没有它,你的程序一样不能跑)
c. VSTO Runtime(这是所有用VSTO开发出来的软件,运行时必备的,目前有三个主本版,第三个版本用来支持ClickOnce部署,本文中不涉及。本文只用到第二个主版本的升级版)
2. 注册表,任何一个VSTO SE插件程序要运行,都是Office启动的时候先从注册表中找到插件的相关信息,主要是LoadBehavior和Manifest的地址,然后根据Manifest的地址,找到manifest文件,manifest文件中记录了dll的地址和一些配置信息 (manifest文件可以用notepad打开) ,根据manifest来装载程序集。我们用VSTO SE新建一个插件项目的时候,Microsoft提供给我们的模板会帮我们自动添加一个Setup项目。这个项目中已经默认地帮我们把要写入的注册表键值写好,无须我们多费心思。当然如果你把默认的Setup项目删掉了 (我经常这么干,因为看着碍眼,并且我一般只要Debug,不要Deploy),自己再添加一个新的Setup项目,这时候,新项目中,系统不会帮你写好注册表的键值。关于注册表,下面是默认Setup项目的注册表视图的截图:
3. 权限的设置问题,Office装载任何VSTO SE开发出来的.NET插件时,都需要这个插件被完全信任。有两种方法完成这个任务:
a. 用Microsoft .NET Framework Wizard (图形化界面)
b. 用Caspol.exe (命令行,本文采用这种方式,原因是好表述,不要图)
二.部署案例
下面我们动手,用VSTO SE创建一个Excel 2007的插件(2003也是一样的,只不过客户机要装Excel 2003和Excel 2003 PIA,还有不要在同一台机器上同时安装Office 2003和2007),并且将它部署到一个客户机上。(由于手头只有英文版VS,菜单名都是英文的,大家自己对应看看吧)
1. 打开Visual Studio 2005,新建项目,在左边的导航板块中,选中C#->Office->2007 Add-ins,在右边选中Excel Add-in。取名ExcelAddIn,点OK。
然后系统会在solution中默认的创建两个项目,一个是插件项目,一个是Setup项目,如图:
2. 在ThisAddIn.cs文件中的ThisAddIn_Startup函数里加一句代码,以供回头测试是否部署成功。修改后的代码如下:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
#region VSTO generated code
this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application),this.Application);
#endregion
MessageBox.Show(“Deploy successfully”);
}
3. 在Solution Expolrer里面,右击ExcelAddInSetup项目,点击Build。
4. 到Setup项目文件夹中的debug目录下找到ExcelAddInSetup.msi文件,拷贝到目标机器上。
5. 在目标机器上,安装:
.Net Framework 2.0
Office 2007 PIAs: (运行完下载文件后,还要点击得到的o2007PIA.msi才是安装PIAs)
VSTO Runtime2.0:
还有目标机上要有对应的Office程序,比如这里就需要Excel 2007!
6. 双击刚刚拷贝到目标机器上的ExcelAddInSetup.msi,选择安装目录并安装,假设安装到了C:/Test目录下。安装完,该目录下会出现两个文件:ExcelAddIn.dll,ExcelAddIn.dll.manifest,其中的.dll文件就是我们下面要设置权限的程序集
7. 回到桌面,点击开始->运行,输入cmd,在命令行提示下,输入cd C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727,回车
然后输入下面命令:
Caspol –u –ag All_Code –url “C:/Test/ExcelAddIn.dll” FullTrust –n “Test”
回车
输入yes
回车 (请勿直接拷贝这段命令行,因为Word好像改变了字体,大家还是自己敲一下,顺带加深一下印象)
8. 打开Excel,MessageBox对话框跳出。
如何用VSTO给EXCEL添加右键菜单项
newBtn.Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption; 这句不要估计就行了
急求C#窗体操作VSTO如何向word模板中的特定文本框添加图文信息
private void button1_Click(object sender, EventArgs e)
{
FileStream stream = null;
SqlConnection conn = null;
SqlCommand cmd = null;
try
{
richTextBox1.SaveFile(“temp.rtf”);
stream = new FileStream(“temp.rtf”, FileMode.Open, FileAccess.Read);
int size = Convert.ToInt32(stream.Length);
Byte[] rtf = new Byte[size];
stream.Read(rtf, 0, size);
conn = new SqlConnection(“Data Source=d30 \\sqlexpress;Initial Catalog=Image;Integrated Security=True;”);
conn.Open();
cmd = new SqlCommand(“UPDATE pic SET picture=@Photo WHERE ID=1”, conn);
SqlParameter paramRTF =
new SqlParameter(“@Photo”,
SqlDbType.Image,
rtf.Length,
ParameterDirection.Input,
false,
0, 0, null,
DataRowVersion.Current,
rtf);
cmd.Parameters.Add(paramRTF);
int rowsUpdated = Convert.ToInt32(cmd.ExecuteNonQuery());
MessageBox.Show(String.Format(“{0} rows updated”, rowsUpdated));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (stream != null) stream.Close();
if (cmd != null) cmd.Parameters.Clear();
if (conn != null) conn.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
SqlConnection cn = null;
SqlCommand cmd = null;
SqlDataReader reader = null;
try
{
cn = new SqlConnection(“Data Source=d30 \\sqlexpress;Initial Catalog=Image;Integrated Security=True;”);
cn.Open();
cmd = new SqlCommand(“SELECT picture FROM pic WHERE ID=1”, cn);
reader = cmd.ExecuteReader();
reader.Read();
if (reader.HasRows)
{
if (!reader.IsDBNull(0))
{
Byte[] rtf = new Byte[Convert.ToInt32((reader.GetBytes(0, 0, null, 0, Int32.MaxValue)))];
long bytesReceived = reader.GetBytes(0, 0, rtf, 0, rtf.Length);
ASCIIEncoding encoding = new ASCIIEncoding();
richTextBox1.Rtf = encoding.GetString(rtf, 0, Convert.ToInt32(bytesReceived));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (reader != null) reader.Close();
if (cn != null) cn.Close();
}
}
visual basic 2015入门经典有vsto知识吗
Visual Basic 是 Visual Studio 6.0 开发产品系列中的一员. Visual Basic是一种由 公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言.
在C#中怎么利用VSTO实现从数据库中取数据到Excel?
如果你用在asp.net里,用Office中间件来解决,更简单轻松.网上例子代码很多
请教关于使用VSTO访问Outlook的签名方法
1. Office 2003 选择选择 加载项2. 启用 插件3. 设置信任位置等相关属性4. 关闭Office 2003 重新启5. 应该没问题Office 2007 测试通