C#中操作Word(8)—— 向Word中插入圖表的三種方法(一)
一、 前言
本文主要介紹向word中插入圖表的方法。方法共有三種,每一種都有自己的適用範圍和利弊。介紹之前,我們準備實驗用的文件,做一個如下圖所示的word模板,我們要做的的是在這個名叫chart的書籤中插入一個圖表,下面然後我將逐一進行介紹這三種方法:
方法一:插入OLEObject型別的圖表
這種方法適用於所有版本的excel,但是插入的圖表介面較為粗糙,word2007之後圖表的顯示效果得到了很大的提升,所以這種型別的圖表逐漸被放棄。該種方法只建議在word2003之前的版本中使用。首先我們需要先引入Microsoft.Office.Interop.Graph的引用,在新增引入的.Net標籤頁找到如下圖圈出的引用,然後點選確定。
為了防止命名控制衝突,我們可以使用using將Microsoft.Office.Interop.Word和Microsoft.Office.Interop.Graph重新命名。
using Word=Microsoft.Office.Interop.Word;
using Graph=Microsoft.Office.Interop.Graph;
完成了上面的工作後我們可以開始了,主要的思路是利用.InlineShapes的AddOLEObje()介面OLEObject型別的圖表的圖示插入,主要程式碼如下:
private void button1_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); Word.Document doc = app.Documents.Add("D:\\Test.docx"); app=doc.Application; doc.ActiveWindow.Visible = true; foreach (Word.Bookmark bk in doc.Bookmarks) { if (bk.Name == "chart") { object oClassType = "MSGraph.Chart.8"; Graph.Axis axis;//x座標 Word.Range range = bk.Range; Graph.Chart wdchart = (Graph.Chart)range.InlineShapes.AddOLEObject(oClassType).OLEFormat.Object; wdchart.Application.DataSheet.Cells.Clear();//清空資料集資料 //axis.MaximumScale = 1;//設定最大刻度 //填充資料集 int i, j; for (i = 0; i < 3; i++) { wdchart.Application.DataSheet.Cells[i + 1, 1] = "列" + i.ToString(); } for (i = 0; i < 4; i++)//填充資料 { for (j = 0; j < 4; j++) { wdchart.Application.DataSheet.Cells[i + 2, j + 1] = i * j; } } //根據y軸畫圖 wdchart.Application.PlotBy = Graph.XlRowCol.xlColumns; wdchart.Legend.Delete(); wdchart.Height = 280; wdchart.Width = 600; //更新圖示並退出 wdchart.Application.Update(); wdchart.Application.Quit(); wdchart = null; } } //doc.SaveAs("E:\\Test.docx"); //app.Quit(); }
上圖中主要程式碼已經列出,原理很簡單,註釋很清楚了不再解釋,如果需要原始碼請克隆本專案,並獲取相應的版本:
本方法執行結果如下:
Github位置:
https://github.com/HymanLiuTS/OfficeTestByC-
克隆本專案:
git clone [email protected]:HymanLiuTS/OfficeTestByC-.git
獲取本文原始碼:
git checkout L08_1
待續…
相關推薦
C#中操作Word(8)—— 向Word中插入圖表的三種方法(一)
一、 前言 本文主要介紹向word中插入圖表的方法。方法共有三種,每一種都有自己的適用範圍和利弊。介紹之前,我們準備實驗用的文件,做一個如下圖所示的word模板,我們要做的的是在這個名叫chart的書籤中插入一個圖表,下面然後我將逐一進行介紹這三種方法:
JavaScript中this關鍵字改變指向的三種方法(apply、call、bind)
首先,瞭解一下this關鍵字。this關鍵字就涉及到函式呼叫的內容。函式的幾種呼叫方式: 普通函式呼叫 作為方法來呼叫 作為建構函式來呼叫 使用apply/call方法來呼叫 Function.prototype.bind方法 ES6箭頭函式 但是不管
以太坊智慧合約中函式呼叫三種方法(很重要!!!)
外部呼叫: sendTransaction/call 函式呼叫一般分外部呼叫和內部呼叫兩種, 外部呼叫是通過JSON-RPC介面實現對合約函式的呼叫, 有3種呼叫方式: testInstance.testFunc.sendTransaction(); testInstance.testFun
java中從鍵盤輸入的三種方法(轉)
java中從鍵盤輸入的三種方法,轉發原文https://blog.csdn.net/u012249177/article/details/49586383 import java.io.BufferedReader; import java.io.IOException; import
c++11多執行緒程式設計(一):建立執行緒的三種方法
c++11執行緒庫原始的c++標準僅支援單執行緒程式設計,新的c++標準(c++11或c++0x)於2011年釋出,引入了新的執行緒庫。 編譯器要求 Linux: gcc 4.8.1 (完全併發支援) Windows: Visual Studio 2012 and Min
Qt 中 QLabel 自定義文字的顏色狀態,設定為三種狀態(類似於Qcheckbutton裡面的checked unchecked)
1 自定義設定Qlabel文字顏色狀態。 別的類可以進行類推 #ifndef QCOMPLEXLABEL_H #define QCOMPLEXLABEL_H #include <QObject> #include <QWidget> #inclu
【c++】模擬實現迴圈佇列 三種方法(標識、浪費一個空間、計數器)
什麼是迴圈佇列? 為充分利用向量空間,克服”假溢位“現象的方法:將向量空間想象為一個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列(Circular Queue)。 假象成如圖: 但實際上儲存空間還是一段連續的空間。 空佇列: 當有元素入隊時:
ubuntu下安裝程序的三種方法(轉)
安裝nagios -s 需要 ibm 查詢 gin make this www. 引言 在Ubuntu當中,安裝應用程序我所知道的有三種方法,分別是apt-get,dpkg安裝deb和make install安裝源碼包三種。下面針對每一種方法各舉例來說明。 一、apt-
JAVA:定時器的三種方法(詳細註解)
第一種: 建立一個thread,然後讓它在while迴圈裡一直執行著,通過sleep方法來達到定時任務的效果,程式碼如下: public class Task1 { public static void main(String[] args) { /
兩欄佈局三種方法(親測有效)
第一種: 只需要兩個div就能實現,主要原理是將第一個div設為浮動,並加上寬度,然後就可以實現兩欄佈局,並不需要設定第二個div的任何東西。程式碼如下: div{ height:500px; } #aside{
Jquery新增元素(append,prepend,after,before四種方法區別對比)
1. append()和prepend() 假設 <div class='a'> //<---you want div c to append in this <div class='b'>b</div> </div> 使用
Linux下執行時呼叫動態連結庫.so的三種方法(筆記)
在/etc/ld.so.conf.d/下建立xxx.conf,在文字中加入.so所在路徑,如:/usr/xxx等等,然後使用相應ldconfig命令使之生效。 將.so所在路徑新增為LD_LIBRARY_PATH環境變數。 在編譯命令中使用-Wl,-rpath
矩陣相乘的三種方法(java實現)
package cqychen.algorithm.ch01; /** * 本程式由cqychen編寫,主要是矩陣相乘的三種方法, 常規方法,一般的分治演算法,strassen演算法,這裡就不編寫泛型的相關方法了,麻煩。 * 後續會繼續跟進演算法導論相應章節
Pycharm專業版免費啟用的三種方法(2018-6月最新)
方法一、伺服器啟用下載VPN:GITHUB開源VPN (目前是免費的,可以用來上谷歌和FB,下載前記得給star哦)安裝pycharm,選擇 Activate new license with License server (用license server 啟用) 點選 Ac
SOCKET 檢測連結是否斷線的三種方法(轉載)
目前主要有三種方法來實現使用者掉線檢測:SO_KEEPALIVE ,SIO_KEEPALIVE_VALS 和Heart-Beat執行緒。下面我就上面的三種方法來做一下介紹。(1)SO_KEEPALIVE 機制 這是socket庫提供的功能,設定介面是setsockopt API: BO
js 數組去重的三種方法(unique)
arr 個數 func () 方法 表數 undefined 唯一性 當前 方法一: Array.prototype.unique=function(){ var arr=[];//新建一個臨時數組 for(var i=0;i<this.length;i
測試RESTful Web Services的三種方法(推薦Simple REST Client)
就連我院的線上教學支援系統都打算分離出核心資料(即學生和課程的資訊),通過REST風格的Web服務來提供這些中心資料,支援其他功能(例如課程論壇、作業釋出和提交等)的實現。這樣做的好處自然是分離的資料可以再提供給今後更多的服務使用,比起傳統的全部使用本地資料庫的方法減少了冗餘和錯誤的產生。而其缺點在於加大
【Linux Is Not Unix】虛擬機器下CentOS配置ip三種方法(1)-橋接模式(bridge)
在bridged模式下,VMWare虛擬出來的作業系統就像是區域網中的一臺獨立的主機,它可以訪問網內任何一臺機器。在bridged模式下,你需要手工為虛擬系統配置IP地址、子網掩碼,而且還要和宿
資料歸一化及三種方法(python)
資料標準化(歸一化)處理是資料探勘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到資料分析的結果,為了消除指標之間的量綱影響,需要進行資料標準化處理,以解決資料指標之間的可比性。原始資料經過資料標準化處理後,各指標處於同一數量級,適合進行綜合對比評價。以下是三種常用的歸一化方法:m
ITEXT 目錄生成的第三種方法(同時帶有書籤功能)
問題場景 本篇接著ITEXT 目錄生成的第二種方法繼續下去,在上一篇博文中大體通過統計章節與對應頁碼來生成的,為保證每個章節唯一,正文中章節部分都是圖片,不是很好,今天參照某位前輩的code改寫了下。