一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于COM組件和Ex-cel文件的技術(shù)實(shí)現(xiàn)合同自動生成系統(tǒng)的設(shè)計

電子設(shè)計 ? 作者:電子設(shè)計 ? 2018-11-23 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

伴隨計算機(jī)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,電力企業(yè)大規(guī)模開展了信息網(wǎng)絡(luò)的建設(shè)和信息系統(tǒng)的開發(fā),信息技術(shù)的應(yīng)用領(lǐng)域已經(jīng)深入到電網(wǎng)生產(chǎn)、經(jīng)營和管理的各個環(huán)節(jié)。電力物資公司作為電力系統(tǒng)的物資專營企業(yè),主要承擔(dān)著電力設(shè)備的招標(biāo)、訂貨和采購工作,日常業(yè)務(wù)需要處理大量的合同數(shù)據(jù)。

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

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

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

用Excel作為數(shù)據(jù)源保存數(shù)據(jù),用Word作為數(shù)據(jù)呈獻(xiàn)的載體顯示數(shù)據(jù),是企業(yè)信息系統(tǒng)輸出數(shù)據(jù)時采取的典型的做法。本文的合同自動生成系統(tǒng)采用了這一方法。另外,在C#開發(fā)平臺下,微軟公司提供了專用于Office 開發(fā)的程序集和相關(guān)的Office 應(yīng)用程序?qū)ο竽P?,即COM.利用COM 和相關(guān)的程序集,可以在C#平臺上實(shí)現(xiàn)對MS Office文件的各種操作。

1.1 用C#讀取Excel文件

合同數(shù)據(jù)來自于ERP 系統(tǒng)數(shù)據(jù)庫,并且已經(jīng)導(dǎo)出到Excel數(shù)據(jù)文件中,Word格式的合同將使用該數(shù)據(jù)文件來生成。因此首先讀取Excel數(shù)據(jù)文件的內(nèi)容,這里有2種方法。

1.1.1 第一種方法

利用COM組件技術(shù)讀取Excel數(shù)據(jù)文件,用到的組件包括:

(1)Application對象,該對象處于Excel對象的層次的頂端,表示Excel應(yīng)用程序的運(yùn)行環(huán)境,即該對象生成時會產(chǎn)生一個excel進(jìn)程。

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

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

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

讀取Excel文件內(nèi)容的步驟如下:

①生成Excel應(yīng)用對象

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

②生成工作薄對象

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

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

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

Sheets[1];

④設(shè)置讀取位置

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

⑤獲取該位置的內(nèi)容

excelRange.toString()

經(jīng)過測試,發(fā)現(xiàn)該方法存在如下缺點(diǎn):如果程序在讀取Excel數(shù)據(jù)文件的同時,需要用Excel程序打開該文件,則只能以只讀副本的方式打開;程序在整個執(zhí)行的過程中,需要Application對象一直存在,而該對象的本質(zhì)是一個Excel進(jìn)程,它占用的系統(tǒng)資源多;Excel的Range對象對單元格逐個定位,導(dǎo)致程序運(yùn)行速度慢。

1.1.2 第二種方法

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

(1)創(chuàng)建連接字符串

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

(2)使用COM組件,創(chuàng)建數(shù)據(jù)連接適配器

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

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

adp.Fil(l ds);

這種方法把Excel數(shù)據(jù)文件中的信息作為一個二維表讀入到數(shù)據(jù)集對象DataSet中,該方法具有的優(yōu)點(diǎn)是:

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

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

1.2 用C#寫入Word文件

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

(1)Word.ApplicationClass 對象,該對象表示W(wǎng)ord應(yīng)用程序環(huán)境。

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

寫入步驟如下:

①設(shè)置空實(shí)參對象

Object m_Nothing = System.Reflection.Missing.Value;

②生成Word應(yīng)用對象

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

Word.ApplicationClass();

③生成Word文檔對象

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

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

object objectfindtext = findtext;

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

object objectreplacewith = replacewith;

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

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

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

2 系統(tǒng)模塊結(jié)構(gòu)

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

Excel 數(shù)據(jù)文件中包含2 種不同類型的合同數(shù)據(jù):

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

基于COM組件和Ex-cel文件的技術(shù)實(shí)現(xiàn)合同自動生成系統(tǒng)的設(shè)計

3 標(biāo)準(zhǔn)合同生成過程

3.1 Word標(biāo)準(zhǔn)合同模板制定

使用合同生成系統(tǒng)之前,需要準(zhǔn)備Excel數(shù)據(jù)文件和Word標(biāo)準(zhǔn)合同模板文件。

Excel數(shù)據(jù)文件直接從ERP數(shù)據(jù)庫中導(dǎo)出。

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

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

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

3.2 自動生成Word標(biāo)準(zhǔn)合同

自動生成Word標(biāo)準(zhǔn)合同的算法如圖2所示。大致可以分為4個步驟:

(1)把Excel數(shù)據(jù)文件中的信息讀取到DataSet數(shù)據(jù)集合內(nèi);

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

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

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

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

基于COM組件和Ex-cel文件的技術(shù)實(shí)現(xiàn)合同自動生成系統(tǒng)的設(shè)計

4 標(biāo)準(zhǔn)合同生成技術(shù)的實(shí)際應(yīng)用

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

基于COM組件和Ex-cel文件的技術(shù)實(shí)現(xiàn)合同自動生成系統(tǒng)的設(shè)計

5 結(jié)語

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

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


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7255

    瀏覽量

    91816
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7660

    瀏覽量

    90749
  • 人機(jī)界面
    +關(guān)注

    關(guān)注

    5

    文章

    544

    瀏覽量

    44939
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    labview COM組件在客戶機(jī)如何實(shí)現(xiàn)自動注冊?

    基于 labview的軟件設(shè)計中,利用了COM組件技術(shù),當(dāng)該軟件給客戶用時不能讓客戶來點(diǎn)擊.EXE注冊吧,請問該如何實(shí)現(xiàn)???
    發(fā)表于 02-21 15:22

    周立功聯(lián)手CEL公司力推ZigBee技術(shù).

    周立功聯(lián)手CEL公司力推ZigBee技術(shù).
    發(fā)表于 08-13 20:33

    labvIEW調(diào)用matlab生成COM組件

    我用labvIEW調(diào)用matlab生成COM組件時,有幾個問題。麻煩大家?guī)臀铱纯词悄膲K不合適,非常感謝上面這個調(diào)用成功,只是運(yùn)行比較慢。沒有錯誤下面這個labvIEW運(yùn)行時出錯程序是用matlab的cftool的File-->
    發(fā)表于 12-12 19:07

    LabView調(diào)用com組件的問題。

    問題描述: 我需要在LabView中調(diào)用matlab程序,使用com組件實(shí)現(xiàn),組件matlab下生成了DLL
    發(fā)表于 05-12 11:13

    合同智能審查技術(shù)促進(jìn)智能金融發(fā)展

    合同審查軟件能夠實(shí)現(xiàn)以下功能:智能抽?。禾崛∥臋n內(nèi)容的主要信息,讓審閱過程更高效。智能比對:比對不同版本、紙質(zhì)和電子版合同的差異,生成對比報告。智能審核:配置專業(yè)知識與審核規(guī)則,比如:
    發(fā)表于 05-26 21:57

    基于模型設(shè)計的HDL代碼自動生成技術(shù)綜述

    設(shè)計和統(tǒng)一建模語言(UML :Unified Modeling Language)作為一種與平臺無關(guān)的建模方法,在電子系統(tǒng)設(shè)計中得到了廣泛的關(guān)注?,F(xiàn)存的幾種UML配置文件在UML級別建模硬件組件,并
    發(fā)表于 06-08 09:29

    自動生成特定偽碼的設(shè)計與實(shí)現(xiàn)

    針對屏幕顯示設(shè)計效率較低的情況,完成了自動生成用戶交互界面?zhèn)未a的設(shè)計,實(shí)現(xiàn)自動生成屏幕顯示偽代碼的系統(tǒng)
    發(fā)表于 05-11 20:19 ?19次下載

    基于COM技術(shù)的濕地信息系統(tǒng)設(shè)計

    在介紹組件對象模型(COM)基本思想的基礎(chǔ)上,提出了基于組件對象模型的濕地WebGIS應(yīng)用體系結(jié)構(gòu),并對濕地WebGIS 系統(tǒng)的開發(fā)過程及相關(guān)實(shí)現(xiàn)
    發(fā)表于 06-26 08:35 ?8次下載

    基于COM技術(shù)的串口通信組件的設(shè)計

    分析了目前對串口編程存在的問題,介紹了COM技術(shù)及其在RS232串口通信的應(yīng)用,指出使用組件相對于ActiveX控件及Windows API編程的優(yōu)點(diǎn)?;?b class='flag-5'>COM
    發(fā)表于 09-02 09:06 ?17次下載

    JAVA中基于JACOB的COM組件調(diào)用研究

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

    基于COM組件的插件平臺技術(shù)研究

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

    智能變電站SCD文件虛回路自動生成技術(shù)的設(shè)計和實(shí)現(xiàn)

    方法,開發(fā)了一種虛回路自動生成技術(shù)。該技術(shù)可以解析模板文件,依據(jù)模板文件內(nèi)設(shè)備的IEDname
    發(fā)表于 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'>技術(shù)</b>的設(shè)計和<b class='flag-5'>實(shí)現(xiàn)</b>

    英創(chuàng)信息技術(shù)利用COM組件遠(yuǎn)程更改設(shè)備配置文件的流程

    基于COM而建立起來的。COM標(biāo)準(zhǔn)包括規(guī)范和實(shí)現(xiàn)兩大部分,規(guī)范部分定義了組件組件之間通信的機(jī)制,這些規(guī)范不依賴于任何特定的語言和操作
    的頭像 發(fā)表于 11-04 09:48 ?1608次閱讀
    英創(chuàng)信息<b class='flag-5'>技術(shù)</b>利用<b class='flag-5'>COM</b><b class='flag-5'>組件</b>遠(yuǎn)程更改設(shè)備配置<b class='flag-5'>文件</b>的流程

    組合邏輯自動測試生成的PDF文件免費(fèi)下載

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

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

    一、實(shí)現(xiàn)功能 1、可以自動創(chuàng)建文件夾 2、根據(jù)Verilog文件自動生成測試
    的頭像 發(fā)表于 06-23 17:48 ?3949次閱讀