1. 程式人生 > >C#中操作Word(8)—— 向Word中插入圖表的三種方法(一)

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#操作Word8—— Word插入圖表方法

一、 前言         本文主要介紹向word中插入圖表的方法。方法共有三種,每一種都有自己的適用範圍和利弊。介紹之前,我們準備實驗用的文件,做一個如下圖所示的word模板,我們要做的的是在這個名叫chart的書籤中插入一個圖表,下面然後我將逐一進行介紹這三種方法:

JavaScriptthis關鍵字改變指向的方法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改寫了下。