如何使用VSTO自动将Excel中的图表复制到Word
如何使用VSTO自动将Excel中的图表复制到Word
原文地址:https://code.msdn.microsoft.com/How-to-copy-Chart-in-Excel-a29f9029
该项目说明如何使用VSTO自动复制Excel中的图表
介绍
有些客户经常在MSDN论坛上提出这个问题。 但在MSDN画廊中没有现有的样本。 所以如果有样品,可以帮助客户解决问题。
客户证据:
http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/21a2fd18-d850-40d9-9d87-122bbaf9369d
http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/8d94da85-a95f-41c0-b7ec-6bf34fd0e151
创建项目
在Visual Studio 2013中打开项目(VBNETExportExcelChartToWord.vbproj)并构建它。
VB代码:
Module Module1
Sub Main(args As String())
Try
Dim appPath As String = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
Dim excelFile As String = appPath & Convert.ToString("\TestExcel.xlsx")
Dim wordFile As String = appPath & Convert.ToString("\TestDoc.docx")
ExportChartDataToWord(excelFile, wordFile)
Console.WriteLine("Chart exported to word document successfully")
Console.ReadLine()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Sub ExportChartDataToWord(excelFile As String, wordFile As String)
Dim objExcelApp As Microsoft.Office.Interop.Excel._Application = New Microsoft.Office.Interop.Excel.Application()
objExcelApp.Visible = False
Dim workbook As Microsoft.Office.Interop.Excel._Workbook = objExcelApp.Workbooks.Open(excelFile)
Dim worksheet As Microsoft.Office.Interop.Excel._Worksheet = DirectCast(workbook.Sheets(), Microsoft.Office.Interop.Excel.Worksheet)
Dim charObj As Microsoft.Office.Interop.Excel.ChartObject = worksheet.ChartObjects("Chart 1")
Dim objWordApp As Microsoft.Office.Interop.Word._Application = New Microsoft.Office.Interop.Word.Application()
If objWordApp Is Nothing Then
Console.WriteLine("Word could not be started. Check that your office installation and project references are correct.")
Return
End If
objWordApp.Visible = False
Dim objDoc As Microsoft.Office.Interop.Word._Document = objWordApp.Documents.Open(wordFile)
charObj.Chart.ChartArea.Copy()
objDoc.Application.Selection.PasteSpecial()
'Save the doc
objDoc.Save()
'Close the open docs and workbooks
objWordApp.Documents.Close()
objWordApp.Quit()
objExcelApp.Workbooks.Close()
objExcelApp.Quit()
End Sub
End Module
1.此示例从Excel文件中复制图表对象内容,然后使用VSTO方式将其粘贴到Word文档中。
2.在执行示例之前,将TestDoc.docx和TestExcel.xlsx文件复制到可执行位置。
3.运行可执行文件VBNETExportExcelChartToWord.exe,这将会将图表内容复制到名为TestDoc.docx的单词文档中?
4.打开word文档并验证其内容。
Imports System.IO
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop.Word
Module Module1 Sub Main()
Try
Dim appPath As String = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
Dim excelFile As String = appPath & Convert.ToString("\TestExcel.xlsx")
Dim wordFile As String = appPath & Convert.ToString("\TestDoc.Docx")
ExportChartDataToWord(excelFile, wordFile)
Console.WriteLine("Chart exported to word document successfully")
Console.ReadLine()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Console.Read()
End Sub
Sub ExportChartDataToWord(excelFile As String, wordFile As String)
Dim objExcelApp As Microsoft.Office.Interop.Excel._Application = New Microsoft.Office.Interop.Excel.Application()
objExcelApp.Visible = False
Dim workbook As Microsoft.Office.Interop.Excel._Workbook = objExcelApp.Workbooks.Open(excelFile)
Dim worksheet As Microsoft.Office.Interop.Excel._Worksheet = DirectCast(workbook.Sheets(), Microsoft.Office.Interop.Excel.Worksheet) 'DirectCast类似于Ctype,不过要求必须前后的类型一致
Dim charObj As Microsoft.Office.Interop.Excel.ChartObject = worksheet.ChartObjects("chart 3")
Dim objWordApp As Microsoft.Office.Interop.Word._Application = New Microsoft.Office.Interop.Word.Application()
If objWordApp Is Nothing Then
Console.WriteLine("Word could not be started.Check that your office installation and project references are correct.")
Return
End If
objWordApp.Visible = False
Dim objDoc As Microsoft.Office.Interop.Word._Document = objWordApp.Documents.Open(wordFile)
charObj.Chart.ChartArea.Copy()
objDoc.Application.Selection.PasteSpecial()
'Save the doc
objDoc.Save()
'Close the open docs and workbooks
objWordApp.Documents.Close()
objWordApp.Quit()
objExcelApp.Workbooks.Close()
objExcelApp.Quit() End Sub
End Module
如何使用VSTO自动将Excel中的图表复制到Word的更多相关文章
- Excel画的图复制到Word中变形的解决办法
在Excel里画好了图,复制到Word里面经常会变形变的一塌糊涂,面目全非,实在是不理解微软为什么要把自己家的软件搞成这样. 要想保持形状不变,需要这样做: 1. 在Excel里面复制图形,和往常一样 ...
- 将excel中的数据填入word模板中-VBA
首先将word模板中需要填写excel中数据的空白处用自己独特的字符串标记,比如 数据001 什么的.如下图: 这样,就可以用vba搜寻这些自己独特的标记来根据excel内容填充word了. 第 ...
- EXCEL 中数据 批量 填充进 word 中
工具:Python3.7 需求描述:将EXCEL中 第二行 数据 填在 word 对应位置上,然后保存为 "姓名+任务.docx"文件. 再将EXCEL中 第三行 数据 填在 wo ...
- Java 添加、读取、删除Excel中的图表趋势线
本文以Java示例介绍如何在Excel中添加趋势线,以及读取趋势线公式.通过文中的方法可支持添加6种不同类型的趋势线,包括Linear.Exponential.Logarithmic.Moving A ...
- 利用openxml在Excel中插入图表
using System.Collections.Generic; using System.Linq; using DOD = DocumentFormat.OpenXml.Drawing; usi ...
- 使用Eclipse在Excel中找出两张表中相同证件号而姓名或工号却出现不同的的项
1:首先把Excel中的文本复制到txt中,复制如下: A表: 证件号 工号 姓名 310110xxxx220130004 101 傅家宜3101 ...
- VBA在Excel中的应用(三)
目录 Chart Export Chart Format Chart Lengend Chart Protect Chart Title Chart Chart Export 1. 将Exce ...
- 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂安装过程详解及安装失败解决方法
因Excel催化剂用了VSTO的开发技术,并且为了最好的用户体验,用了Clickonce的布署方式(无需人工干预自动更新,让用户使用如浏览器访问网站一般,永远是最新的内容和功能).对安装过程有一定的难 ...
- Excel自动从身份证中提取生日、性别、年龄
现在学生的身份证号已经全部都是18位的新一代身份证了,里面的数字都是有规律的.前6位数字是户籍所在地的代码,7-14位就是出生日期.第17位“2”代表的是性别,偶数为女性,奇数为男性.我们要做的就是把 ...
随机推荐
- 用basicTrendline画一元线性回归直线的置信区间
感慨统计学都还给老师了..恶补! R安装包的时候貌似需要用管理员权限启动,否则安装不了,国内镜像卡得渣渣,还是国外镜像真香~选择hongkong就好了. install.packages(" ...
- boke练习: freemarker对空变量报错 (classic_compatible设置true,解决报空错误)
我有一个变量: commentModel 默认只是为空, 在freemarker模板中使用<#if>判断是报错 <#if commentModel> ..... </#i ...
- redis安装配置:inux系统为centOS 64位
下载Redis-4.0.6.tar.gz包 我下载的到自己的默认目录/root/software/下 1. 然后解压到这个目录下 /usr/local/src/ 解压命令: tar -xzf redi ...
- Linux中怎么通过PID号找到对应的进程名及所在目录
有时候通过top命令可以看到有个别进程占用的内存比较大,但是top无法直接查看到进程名以及进程所在的目录.所以我们可以通过以下方法来定位. 首先需要知道PID号,可以通过top命令获取. ps -au ...
- Ubuntu/Debian nginx 简介
Linux运营维护(简称运维) 这里是简单的使用介绍: 参考:http://einverne.github.io/post/2017/06/ubuntu-debian-install-nginx.ht ...
- 关于 android.net.conn.CONNECTIVITY_CHANGE 7.0之后取消
官方说法Declaring a broadcastreceiver for android.net.conn.CONNECTIVITY_CHANGE is deprecated for apps ta ...
- android -------- Data Binding的使用(一)
Google推出自己官方的数据绑定框架Data Binding Library 已经很久了,很多企业也在使用 面试的时候也有问到,所以也去学习了一番,特来分享一下,希望对各位有所帮助 描述: Data ...
- python基础之lambda,sort,filter,map,递归函数的运用
内容梗概:1. lamda 匿名函数2. sorted()3. filter()4. map()5. 递归函数 1.lambda 形式: lambda 参数:返回值 f = lambda x,y: x ...
- 配置ssh免密登录
安装ssh sudo apt-get install ssh 产生密钥:ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa (rsa为ssh的加密方式 ...
- VMware(虚拟机) 12版安装深度linux系统
需要的工具: 1.VM ware workstation12虚拟机(可自行百度下载) 参考:VMware Workstation 12.5.5 官方中文正式版,下载地址:http://www.epi ...