在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于COM組件和Ex-cel文件的技術實現合同自動生成系統的設計

電子設計 ? 作者:電子設計 ? 2018-11-23 10:06 ? 次閱讀

引言

伴隨計算機和網絡技術的飛速發展,電力企業大規模開展了信息網絡的建設和信息系統的開發,信息技術的應用領域已經深入到電網生產、經營和管理的各個環節。電力物資公司作為電力系統的物資專營企業,主要承擔著電力設備的招標、訂貨和采購工作,日常業務需要處理大量的合同數據。

目前物資合同數據來自于電系統的ERP 數據庫,以Excel文件格式導出,采用人工方式把數據文件中的合同數據填入Word 格式的標準合同文件。在該過程中,人工填寫數據的做法存在問題較多。通常一個Ex-cel數據文件就會有幾十甚至數百份合同數據,如果采用人工錄入數據的方式不僅勞動量大、生成合同速度慢、而且還容易出錯;另外,如果Word合同模板發生變化,需要添加或刪除一些數據項,那么按照原合同模板制作的合同就需要逐份修改或重新錄入,因而維護合同文件十分困難、不靈活。

為了解決這些問題,本文討論了如何在C#環境下,利用COM 組件讀/寫MS Office Excel 和Word 文件的技術,研究自動地生成合同文件的方法,實現了自動生成合同文件的軟件系統,該系統的應用將大幅削減人為操作、提高工作效率和質量、進而提升企業形象帶來良好的社會效益。

1 C#處理Excel 和Word 文檔的方式

用Excel作為數據源保存數據,用Word作為數據呈獻的載體顯示數據,是企業信息系統輸出數據時采取的典型的做法。本文的合同自動生成系統采用了這一方法。另外,在C#開發平臺下,微軟公司提供了專用于Office 開發的程序集和相關的Office 應用程序對象模型,即COM.利用COM 和相關的程序集,可以在C#平臺上實現對MS Office文件的各種操作。

1.1 用C#讀取Excel文件

合同數據來自于ERP 系統數據庫,并且已經導出到Excel數據文件中,Word格式的合同將使用該數據文件來生成。因此首先讀取Excel數據文件的內容,這里有2種方法。

1.1.1 第一種方法

利用COM組件技術讀取Excel數據文件,用到的組件包括:

(1)Application對象,該對象處于Excel對象的層次的頂端,表示Excel應用程序的運行環境,即該對象生成時會產生一個excel進程。

(2)Workbook 對象,該對象直接位于Application 對象的下層,表示一個Excel工作薄文件。

(3)Worksheet對象,包含在Workbook對象中,表示一個Excel工作表。

(4)Range對象,包含在Worksheet對象中,表示Ex-cel工作表中的一個或多個單元格。

讀取Excel文件內容的步驟如下:

①生成Excel應用對象

Excel.Application excelApp = new Excel.ApplicationClass();

②生成工作薄對象

Excel.Workbook excelBook = excelApp.Workbooks.Open(Ex-celFilePath,Type.Missing,…);

③利用Excel數據文件中的第一張工作表生成工作表對象

Excel.Worksheet excelSheet = (Excel.Worksheet)excelBook.

Sheets[1];

④設置讀取位置

Excel.Range excelRange = excelSheet.get_Range(A1,Miss-ing.Value);

⑤獲取該位置的內容

excelRange.toString()

經過測試,發現該方法存在如下缺點:如果程序在讀取Excel數據文件的同時,需要用Excel程序打開該文件,則只能以只讀副本的方式打開;程序在整個執行的過程中,需要Application對象一直存在,而該對象的本質是一個Excel進程,它占用的系統資源多;Excel的Range對象對單元格逐個定位,導致程序運行速度慢。

1.1.2 第二種方法

利用COM 中的數據存取組件ADO.Net,該組件中包含了OleDbDataAdapter 對象,通過它可以把Excel 數據文件當作數據庫來讀取。讀取步驟如下:

(1)創建連接字符串

string sConnStr=“Provider=Microsoft.Jet.Oledb.4.0; DataSource=”+sExcelFile+“;Extended Properties=Excel 8.0″;OleDb-Connection connection=new OleDbConnection(sConnStr);

(2)使用COM組件,創建數據連接適配器

OleDbDataAdapter adp = new OleDbDataAdapter(”Select *from [Sheet1$]“,connection);

(3)使用數據適配器的填充方法填充數據集對象dsDataSet ds = new DataSe(t );

adp.Fil(l ds);

這種方法把Excel數據文件中的信息作為一個二維表讀入到數據集對象DataSet中,該方法具有的優點是:

(1)不產生excel應用對象,因此系統資源占用少,另外ADO組件對象在填充完DataSet后可以釋放掉,更加節省系統資源;

(2)不用逐個生成Rang對象對單元格逐個定位,采用類似二維數組下標方式對數據定位,程序運行效率顯著提高。

1.2 用C#寫入Word文件

這里采用了與讀寫Excel相似的做法,即用COM組件操作Word 文檔。對于Excel 中直接提取的數據,例如:合同編號和設備名稱等,采用查找-替換的方式寫入Word文件中;對于需要進行格式化處理后再寫入Word文檔的數據,例如:大寫合同金額和采購日期等,采用查找-修改-替換的方式寫入。用到的對象包括:

(1)Word.ApplicationClass 對象,該對象表示Word應用程序環境。

(2)Word.Document對象,該對象提供Word 文檔的處理功能,對應于具體的磁盤文件。

寫入步驟如下:

①設置空實參對象

Object m_Nothing = System.Reflection.Missing.Value;

②生成Word應用對象

Word.Application wordApp = new Microsoft.Office.Interop.

Word.ApplicationClass();

③生成Word文檔對象

Word.Document wordDoc = wordApp.Documents.Open(合同模板文件所在路徑,ref m_Nothing,…);

④設置要搜索的字符串,findtext 是字符串類型的對象

object objectfindtext = findtext;

⑤設置要替換的字符串,replaceWith是字符串類型的對象

object objectreplacewith = replacewith;

⑥使用Word 應用對象的Selection.Find.Execute()方法完成字符串的查找和替換操作

wordApp.Selection.Find.Execute(ref findtext,…,ref m_Re-placewith,ref m_Replace,…);

該方法的m_Replacewith 和第m_Replace 參數分別表示要在Word文件中查找的字符傳和替換字符串。

2 系統模塊結構

設計合同自動生成系統的目標是讓合同編制人員能夠靈活、快捷、準確地生成合同文檔。該系統的整體架構如圖1所示。首先從ERP中導出要生成的合同數據,將其存放在一份Excel文件中。然后根據需要準備Word標準模板(注:此處的”模板“仍是一個以doc為后綴的文檔,不是指后綴名為dot的Word模板文件,文中出現的模板二字均照此意理解)。最后,系統的核心部分是合同自動生成程序,它的主要功能是按照輸入的Word標準合同模板,從Excel文件中提取所需的數據并寫入Word合同文件,從而形成符合要求的合同文本。

Excel 數據文件中包含2 種不同類型的合同數據:

單行合同數據(即Excel中的一行記錄對應一份合同)和多行合同數據(即Excel中多行記錄對應一份合同)。對于一份完整的Word格式合同,一般的文本數據可以采用查找-替換或查找-修改-替換的方式寫入,但是合同中的明細表大小不固定,單行合同數據的明細表中只有一條記錄而多行合同數據的明細表中有多條記錄。系統要針對不同類型的合同數據進行分別處理。

基于COM組件和Ex-cel文件的技術實現合同自動生成系統的設計

3 標準合同生成過程

3.1 Word標準合同模板制定

使用合同生成系統之前,需要準備Excel數據文件和Word標準合同模板文件。

Excel數據文件直接從ERP數據庫中導出。

Word標準合同模板中包含2種性質的文字:固定不變的內容,即每份合同都相同的部分,例如合同中的法律聲明、甲方聯系人、甲方單位地址等文字信息;以及發生變化的內容,例如合同中的產品名稱、產品價格等信息,這些變化內容來自于Excel數據文件,每份合同都不相同。對于可變的內容用統一格式的字符串填寫,該字符串本質上起到占位符的作用,在自動填入信息時有助于查找和替換操作。它由2部分組成,第一是不會引起歧義的前后綴;第二是被前后綴圍堵的部分,用來說明被替換的內容在Excel數據文檔中的列名稱。例如”au-togen工程項目autogen“字符串表示應該用Excel數據文檔中名稱為”工程項目“的列所對應的內容來替換此處的字符串,添加前后綴”autogen“可以避免與合同的其他固定內容沖突,不會導致錯誤替換。當然,對Word文檔進行定位可采用的技術還包括書簽定位、域定位等[3-10],但不如直接填寫查找字符串方便,比較適合標準模板的編寫人員所采用。

另外,對于合同模板中的”明細表“,其中要填寫的記錄數量不固定,不能用查找和替換方式寫入合同,對此采用了動態處理的辦法,在程序中根據具體的明細數據行數向明細表填寫數據。

Word 標準合同模板的準備工作比較復雜,但是該模板一般不會發生變化。如果必須修改標準合同模板,模板修改只需修改固定內容或添加/刪除可變內容的替換字符串即可。

3.2 自動生成Word標準合同

自動生成Word標準合同的算法如圖2所示。大致可以分為4個步驟:

(1)把Excel數據文件中的信息讀取到DataSet數據集合內;

(2)檢查DataSet中的當前行數據是否為新合同數據的開始,即合同首行數據,如果存在該行數據則打開Word合同模板,采用逐項查找-替換或查找-修改-替換的方法填充合同模板中的可變數據;如果該行數據不存在,則說明已經處理至數據文件末尾,退出程序;

(3)檢查該份合同是否有明細項(行),如果有則采用循環的方式逐行把明細項填入Word模板中的”明細表“,如果沒有則直接把合同數據首行寫入該表。

(4)保存按模板生成的合同,然后返回到步驟(2)。

在步驟(2),(3)中如果讀取到的數據無效,則當前的合同文件生成立即終止,并把無效數據出現的位置向用戶報告,計算下一份合同的開始位置,從步驟(2)繼續運行。

基于COM組件和Ex-cel文件的技術實現合同自動生成系統的設計

4 標準合同生成技術的實際應用

基于COM組件的合同文本自動生成系統在陜西省電力物資公司進行了實際應用。操作人員輸入Excel合同數據文件和標準合同模板文件后,程序將根據數據文件的內容逐份生成合同文檔,如圖3所示。若某個合同數據出現錯誤,則報告該錯誤所在數據文件的行號和字段,終止生成該合同,并繼續處理后續合同數據。從只有幾份合同數據到數百份合同數據的Excel文件,整個自動生成過程需要數秒到數十秒時間。如果全由人工編寫合同文檔,少則需要數小時時間錄入、校對,多則需要數天時間。該系統的應用把操作員從繁重手工作業中解放出來,避免了手工操作所帶來的遺漏和錯誤,使合同文檔的生成工作更加標準化、規范化,大大提高了工作效率。

基于COM組件和Ex-cel文件的技術實現合同自動生成系統的設計

5 結語

本文在基于COM組件技術對Excel和Word操作支持的基礎上,提出了自動生成Word格式合同文檔的方法,并根據該方法實現了合同文檔自動生成系統。在陜西省電力物資公司的實際應用中,驗證了這種技術的可行性和高效性。

但是,系統仍有一些不足之處,還存在以下幾方面的后續研發工作:Word合同模板中動態內容的增減仍要靠人工打開Word文檔增刪占位字符串,應能提供更好的人機界面,通過鼠標拖拽的方式從Excel數據文件中選擇出Word合同模板所需的占位字符串。從而提高模板制作的自動化程度,減少人為操作失誤;標準化合同模板的規范化問題,合同模板的規格和標準越規范,利用計算機技術進行自動化處理的程度就越高;該軟件系統能否自動生成其他類型的文件,即能否提高它的抽象性和通用性問題。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7220

    瀏覽量

    89955
  • 計算機
    +關注

    關注

    19

    文章

    7566

    瀏覽量

    88878
  • 人機界面
    +關注

    關注

    5

    文章

    535

    瀏覽量

    44304
收藏 人收藏

    評論

    相關推薦

    labview COM組件在客戶機如何實現自動注冊?

    基于 labview的軟件設計中,利用了COM組件技術,當該軟件給客戶用時不能讓客戶來點擊.EXE注冊吧,請問該如何實現???
    發表于 02-21 15:22

    周立功聯手CEL公司力推ZigBee技術.

    周立功聯手CEL公司力推ZigBee技術.
    發表于 08-13 20:33

    labvIEW調用matlab生成COM組件

    我用labvIEW調用matlab生成COM組件時,有幾個問題。麻煩大家幫我看看是哪塊不合適,非常感謝上面這個調用成功,只是運行比較慢。沒有錯誤下面這個labvIEW運行時出錯程序是用matlab的cftool的File-->
    發表于 12-12 19:07

    LabView調用com組件的問題。

    問題描述: 我需要在LabView中調用matlab程序,使用com組件實現組件matlab下生成了DLL
    發表于 05-12 11:13

    合同智能審查技術促進智能金融發展

    合同審查軟件能夠實現以下功能:智能抽取:提取文檔內容的主要信息,讓審閱過程更高效。智能比對:比對不同版本、紙質和電子版合同的差異,生成對比報告。智能審核:配置專業知識與審核規則,比如:
    發表于 05-26 21:57

    基于模型設計的HDL代碼自動生成技術綜述

    設計和統一建模語言(UML :Unified Modeling Language)作為一種與平臺無關的建模方法,在電子系統設計中得到了廣泛的關注。現存的幾種UML配置文件在UML級別建模硬件組件,并
    發表于 06-08 09:29

    自動生成特定偽碼的設計與實現

    針對屏幕顯示設計效率較低的情況,完成了自動生成用戶交互界面偽碼的設計,實現自動生成屏幕顯示偽代碼的系統
    發表于 05-11 20:19 ?19次下載

    基于COM技術的濕地信息系統設計

    在介紹組件對象模型(COM)基本思想的基礎上,提出了基于組件對象模型的濕地WebGIS應用體系結構,并對濕地WebGIS 系統的開發過程及相關實現
    發表于 06-26 08:35 ?8次下載

    基于COM技術的串口通信組件的設計

    分析了目前對串口編程存在的問題,介紹了COM技術及其在RS232串口通信的應用,指出使用組件相對于ActiveX控件及Windows API編程的優點。基于COM
    發表于 09-02 09:06 ?17次下載

    JAVA中基于JACOB的COM組件調用研究

            本文在研究了COM 組件復用,自動化和JNI 技術的基礎上,詳細闡述了JACOB
    發表于 09-05 10:41 ?26次下載

    基于COM組件的插件平臺技術研究

    基于COM 組件的插件平臺技術可以實現軟件的重用性和可擴展性,不需要集成各源代碼或鏈接庫進行編譯與鏈接就可以對軟件進行更新和升級,實現即插即
    發表于 06-07 18:29 ?0次下載
    基于<b class='flag-5'>COM</b><b class='flag-5'>組件</b>的插件平臺<b class='flag-5'>技術</b>研究

    智能變電站SCD文件虛回路自動生成技術的設計和實現

    方法,開發了一種虛回路自動生成技術。該技術可以解析模板文件,依據模板文件內設備的IEDname
    發表于 03-22 14:25 ?0次下載
    智能變電站SCD<b class='flag-5'>文件</b>虛回路<b class='flag-5'>自動</b><b class='flag-5'>生成</b><b class='flag-5'>技術</b>的設計和<b class='flag-5'>實現</b>

    英創信息技術利用COM組件遠程更改設備配置文件的流程

    基于COM而建立起來的。COM標準包括規范和實現兩大部分,規范部分定義了組件組件之間通信的機制,這些規范不依賴于任何特定的語言和操作
    的頭像 發表于 11-04 09:48 ?1420次閱讀
    英創信息<b class='flag-5'>技術</b>利用<b class='flag-5'>COM</b><b class='flag-5'>組件</b>遠程更改設備配置<b class='flag-5'>文件</b>的流程

    組合邏輯自動測試生成的PDF文件免費下載

    本文檔的主要內容詳細介紹的是組合邏輯自動測試生成的PDF文件免費下載包括了:? 自動測試生成(ATPG)相關問題 ? 組合(Combinat
    發表于 12-01 08:00 ?2次下載
    組合邏輯<b class='flag-5'>自動</b>測試<b class='flag-5'>生成</b>的PDF<b class='flag-5'>文件</b>免費下載

    如何在VScode中自動生成Verilog仿真文件

    一、實現功能 1、可以自動創建文件夾 2、根據Verilog文件自動生成測試
    的頭像 發表于 06-23 17:48 ?3618次閱讀
    主站蜘蛛池模板: 99亚洲精品卡2卡三卡4卡2卡 | 日本一区三区二区三区四区 | 人人草人人干 | 91伊人网| 三级网址在线 | 亚洲一区二区高清 | 在线视频亚洲一区 | 91大神亚洲影视在线 | 久久精品国波多野结衣 | 1300部小u女视频免费 | 全国男人天堂网 | 性xxxfreexxxx性欧美 | 日本人亚洲人成人 | 伦理片日本韩国电影三级在线观看 | 人人玩人人弄人人曰 | 五月婷婷激情网 | 一级女人毛片人一女人 | 情趣店上班h系列小说 | 黄网站在线观看高清免费 | 白嫩少妇激情无码 | 新版天堂中文网 | 美国色天使 | 天天干b | 欧美黑人巨大日本人又爽又色 | 久久精品草 | 日韩美女奶水喂男人在线观看 | 推倒都市极品贵妇 | h在线观看免费 | 五月婷婷免费视频 | 五月婷婷伊人网 | 97人人做人人添人人爱 | 欧美性白人极品1819hd | 亚洲一区二区三区网站 | 色婷婷激婷婷深爱五月老司机 | 午夜国产视频 | 深深激情网| 天堂网在线www资源在线 | 日本午夜三级 | 欧美黄三级在线观看 | a在线观看网站 | 亚洲成人免费在线 |