如何使用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”代表的是性别,偶数为女性,奇数为男性.我们要做的就是把 ...
随机推荐
- top 内存mem的used很高,或者100%
top 内存mem的used很高,或者100% Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高 ...
- 6月6 Smarty练习----设置题目及打印试卷
所需要的数据库表格:shiti, shititimu, timu, kemu, xuanxiang 考试试题的设置: 考试试题后台:ksset.php <?php include(" ...
- leetcode-algorithms-15 3Sum
leetcode-algorithms-15 3Sum Given an array nums of n integers, are there elements a, b, c in nums su ...
- 牛客练习赛30-A/C
链接:https://ac.nowcoder.com/acm/contest/216/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- Convert java.lang.String to oracle.jbo.domain.Date
https://www.techartifact.com/blogs/2013/09/converting-java-lang-string-to-oracle-jbo-domain-date.htm ...
- [luogu P2319] [HNOI2006]超级英雄
[luogu P2319] [HNOI2006]超级英雄 题目描述 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金. ...
- flex布局文本过长不显示省略号
https://www.cnblogs.com/tgxh/p/6916930.html 解决方法: 给flex子元素添加css: white-space: nowrap; text-overflow: ...
- oracle 常用字符串函数
select initcap('guodongdong') from dual; /返回字符串并将字符串的第一个字母变为大写; s ...
- hearbeat of RAC
Heartbeat is a pooling mechanism in clustered platforms to verify if the other server participating ...
- oracle 11g创建数据库教程
cd /oracle/app/oracle/product//dbhome_1/bin ./dbca 自定义用户表空间大小. 安装过程半个小时是需要的. 2.配置oracle系统用户环境变量 使用vi ...