導航:首頁 > 編程知識 > 如何利用編程做多文件數據合並

如何利用編程做多文件數據合並

發布時間:2024-11-16 15:20:53

1. 初學者怎樣看懂代碼

初學者要看懂代碼首先從要需求分析了解,然後是系統分析,最後是塊的理解。看懂代碼其實不難,大抵不過是選擇,分支,循環。語法如果看不懂,那就需要補補基礎,先弄清楚這段代碼要做什麼,有說明最好,可以幫助理解,沒有說明就試著過一下代碼流程。

(1)如何利用編程做多文件數據合並擴展閱讀:

最重要的是學會寫程序

C語言也好,python也好,得學會思考用程序實現,舉個例子,想制定計劃表,安排時間,那這個問題就可以寫個程序來實現;你想做筆記、管理自己的文件,這也是一個程序。

從簡單的、直接的幾行十幾行程序開始,比如計算器;到復雜的小工具,比如大數計算器,這個過程中你逐漸明白數組、指針、內存布局、函數,了解遞歸、棧、鏈表,然後學基本的數據結構,之後再寫程序,你需要考慮代碼的優雅、簡單、時間空間效率高,使用什麼樣的方式來實現最好,最後學會了復用,學會了調用系統API,學會了想什麼就能用代碼實現什麼或者知道它不能被實現,就學會了編程。



2. java中什麼是類爆炸

可能是由於設計者對面向對象設計經驗的缺少,也可能設計者是一個刻板的教條主義者,結果出品了一個很不理想的設計,其中可能就體現在類的數量爆炸的問題。

類爆炸的現象已經發生在我們的軟體系統中了。比如我們某期的系統中各種模塊文件的數量已經達到一千多個了,雖然比起操作系統這樣的系統來說,由一千多個模
塊組成的系統不算什麼,但是我們目前的軟體團隊維護這么多的模塊真的是有些吃力。由於我們使用的是VB,這還導致另一個問題,VB能裝載的文件總數是有限
制的,最後用戶提出了新的需求需要新的模塊來完成實現,系統卻已經不允許加入新的模塊了,最後不得不對系統進行拆分或者對某些模塊進行合並。

類爆炸的直接原因是設計者對類的抽象粒度沒能把握好,只要兩個事務有所差別就用不同的類來設計。粒度能多小就做多小,以為這樣可以減少耦合。事實是如此
嗎?最近組長讓我寫一份設計問題,他已經規定了設計文檔的規范和大綱,規范中說「本系統編碼使用了三種類:界面類、實體類、記錄集類,並調用了公用模塊中
相應函數」,這可能是他從別的設計規范中繼承抄襲過來的。但是我最後提交的設計文檔沒有實體類和記錄集類,組長問我為什麼沒有這兩種類,我說我不需要這兩
種類,我這個功能一個界面就可完成了。但是他覺得,如果我沒有那兩個類就應該在設計文檔中說明沒有那兩個類,我說我的設計文檔中沒有描述那兩個類就表明我
沒有那兩個類,而不需要在文檔中說明「實體類,無;記錄集類,無」。

如果每一個功能的完成都必須設計成「界面類、實體類、記錄集類」這三種類來聯合完成,我們就陷入了教條主義的深淵中。曾經和某個項目經理探討過,「a=c
與a=b=c」的取捨問題,我的觀點是根據具體情況來決定是使用「a=c」的結構還是使用「a=b=c」的結構,他的觀點是每個功能都一律使用
「a=b=c」的結構,這導致我很郁悶。為什麼要在很簡單的情況下,本來可以直接就讓「a=c」,何必非要加一個中間件「b」,通過「b」來讓
「a=c」?不是我不知道「a=b=c」的結構的用意,而是我覺要根據具體情況來應用。我們的系統的類爆炸就是因為不分優劣一律使用「a=b=c」的結構
而爆炸的。對於面向對象的初期使用者來說,總會津津樂道他在系統中實現了面向對象的設計,盡管那個設計比較糟糕。其實這位項目經理只是給了一個系統的規范
文檔而已,至於說是他設計了系統的架構,那還遠遠談不到。系統中有什麼類,類如何創建,類如何組織,類之間如何通信,他都沒有做。只是在文檔里說了「本系
統編碼使用了三種類:界面類、實體類、記錄集類,並調用了公用模塊中相應函數」,一句話了事。系統中到底有多少類,他不知道。

我在閱讀設計專家關於面向對象設計和設計模式的文章時,這些專家一再強調要謹慎使用面向對象和設計模式,否則後果就是苦果。我在應用面向對象時一向比較小心,一步一步的學習使用,而不是一步到位,畢竟我是個初學者。

再舉一個例子。我們的系統中有一個連接類,大家都知道這個類是用來連接資料庫的。不過我想很少有人知道為什麼設計者要設計出這樣一個類來。是因為他剛剛讀
過設計模式中有一個「單例模式」。對於我們現在的這個系統來說,使用一個資料庫連接對象就可以了,設計者為了避免每個程序員都去創建新的資料庫連接,就使
用「單例模式」設計出一個連接類來。「單例模式」的用意就是某個類的實例在整個系統中只能有一個實例存在。比如我們用的windows剪貼板,在整個系統
中只能有一個剪貼板,大家都不會去new一個新的剪貼板出來。

我感到非常的郁悶,在一個公用模塊里申明一個系統變數connection就可以了,告訴大家這個對象是我們的資料庫連接對象,大家都用這個對象,為什麼
再來一個clsConnection類對connection重新包裝一下?,這反而就有問題了,我可以new出無數個clsConnection的實
例,沒有達到「單例模式」的用意,因為在clsConnection類里沒有提供靜態方法來總是返回系統中已經存在的連接對象,這成了「多例模式」了。也
許設計者的另一個用意是要使用設計模式中的「簡單工廠模式」。不過,不管是想練習什麼模式,對於一個connection根本沒有必要再包裝了。這好比我
們有一個系統級變數,為了避免大家都去申明這個變數就用一個類來包裝這個變數。那麼系統中已經存在這樣一個類,為了避免大家亂用這個類,就再來一個類來包
裝這個類?層層包裹下去,怎麼才算安全?(這里的例子是應用VB做的系統,JAVA使用者請勿隨意理解。這里有語言差異。)
使用面向對象設計技術會產生良好的系統,但是,類是面向對象中的東西,那麼類爆炸也必然是使用面向對象的產物,這是不良設計導致的。

我們有的程序員有些過於遵守規范而顯得有些刻板了。舉個例子。某個程序員做了一個類A和一個類B,實體B是實體A的載體(規范中要求每個實體都要對應一個
類),類A提供了一個修改自身的方法,當實體B的某個屬性改變時必須要改變實體A的某個屬性。我看了源代碼,發現一條SQL語句就可以解決這個問題,但是
這個程序員為了用類A的修改方法,在類B中寫了一個循環,先找出所有屬於實體B的實體A,並創建類A的實例,然後調用類A的修改方法。代碼不但冗長還效率
低下。這個程序員有自已的理由去那樣做,理由1是上面領導制定的規范要求這樣做,理由2是這是一種面向對象的應用,因為類A已經提供了修改實體A的方法,
別人就應該重用這個方法。一切講究重用。

我想提出的是,如果重用這個方法即不使代碼簡潔又不能提高效率而且還造成強烈的耦合,為什麼還要重用它?在面向對象中,大家知道類的構造函數是用來做什麼
的嗎?重載方法又是為什麼嗎?為什麼一個類可以有多個不同的構造函數?不同的構造函數是為了達到不同的目的,而不僅僅是為了實例化一個類。方法的重載也是
為了實現不同的目的。當類A提供的方法不能很好的完成任務時,我們就應該舍棄它或者重載它。如果規范要求必須類B調用類A的方法(這個「必須」很值得疑
問)時,那麼應該在類A中提供不同的修改方法以使設計合理。類A可以有這樣的兩個方法:方法1(以實體A自身的引用為參數),方法2(以實體B的引用為參
數)。

關於重用。

我們現在設計系統一直想達到重用的目的。但是考慮我們所做軟體的性質,我們對系統組件應該達到什麼樣的重用程度。我們的組件是不是要發布出去供第三方二次
開發?我們的組件是不是每年能達到2次重用?業務組件和與業務無關的組件重用的能力是不是有很大區別?我們不同的客戶的業務規范是不是相差比較大?

由於我們現在對業務抽象的不到位,設計出來的類的粒度控制的不夠好。業務相關和業務無關的對象的分離做的不夠好,因此,實現組件甚至一個子系統的重用是很難的,只能為不同的客戶去修改現有的代碼,這顯然不是重用,而是維護。我們的代碼一年連一次重用的機會都沒有。

關於創新。

如果沒有創新的設計,後果是可想而知的,不管我們了解的業務再多,我們總是用最原始或者最笨拙的設計去實現業務。這樣我們對業務了解的越多,系統做的越
大,代碼就越混亂越不穩定。能達到將就湊乎的使用已經是不錯的了。當硬體技術飛速發展的時候,軟體技術卻落後,結果是什麼?那麼,在我們公司,業務和技
術,哪個是硬體哪個是軟體?當所有程序員都意識到爭當項目經理和項目組長可以不去編寫程序而待遇卻提高了時,結果是什麼?設計需要創新,了解業務卻是一種
帶有明顯的「被動」特徵。用戶不告訴你他的業務規則你就不知道,告訴你,你就知道。當用戶停止提供需求時,這段時間內,需求調研人員應該做什麼工作?是不
是留下了大量的需求文檔,是不是去抽象業務規則了?需求調研人員是不是能發現不同客戶的不同業務之間的相似性為設計人員提供指導?

我們無法為客戶去創新業務,但我們應該去創新我們的設計。一個軟體的設計很難保持三年不變,如果三年後還不能有所創新而發生變換,那就落後了。為了適應新
的形式,微軟敢於修改自己的操作系統的內核使系統升級。不升級意味著失去財富,而升級時難免要修改部分內核。那麼,應用創新技術付出的代價大還是保持原有
系統不變的受益大?我們要考慮新系統生產時的陣痛和它以後帶來的長遠利益。

公司的人員流動的特徵我們是否加以分析了,流走的是什麼的樣人,進來的又是什麼樣的人。這些人的技術能力、性格、悟性又是如何?我們擁有了許多安於現狀不
具創新的老員工,我們該怎麼對待他們?如果一個員工的性格激烈但悟性良好能有創新,我們是不是排擊他了?兢兢業業、按部就班、任由指揮是不是就是一個優秀
的員工?

一個公司,各種性格的員工的存在應該有一個比例。全部都是不安分的創新者是不好的,充斥大量的安分守己、明哲保身、上面怎麼說下面就怎麼做的員工也是不好的現象。公司員工的性格和悟性的分布應該象一個波浪一樣,有浪頭有浪波,這樣才能形成巨浪。

關於溝通。

公司越大,我發現員工之間的溝通越差。當我們還是一家小公司的時候,我可以認識所有的人,現在僅能認識個別幾個人。溝通,不是由領導來強調下面的人去做
的,而是由領導來啟動和帶動的。所謂「領導」兩個字,就是「領」和「導」,什麼意思?大家自然知道。如何才能稱得上一個領導,他必須具有領頭和導向的作
用。各個部門的領導肩負著不同的「領導」。技術領導,他的技術是不是一定要強?若不強,是不是他能通過溝通的藝術來讓下面的人服從?

溝通是一個大的問題。比如我早已經應用過一個比較好的資料庫設計模型,但是新項目的設計者從來也沒有咨詢過我是怎麼做的,結果他自己搞出一個很糟糕的數據
模型。溝通是一個雙向過程。被動的溝通與主動的溝通的效果自然是不同的。我們現在缺乏主動溝通,就是被動溝通都不能好好的參與。所以,溝通出現了「推模
式」和「拉模式」。舉個例子,我有些編程技巧放到公司網站了,很少有人去用主動的看,如果他主動去看了,這種行為模式稱作「拉模式」。為了讓更多的人知道
我的技巧,我只能主動把技術文章發到每個人的郵箱里,我的這種行為模式是一種「推模式」。我把技術文章推到每個人的郵箱里了,那麼接收郵件的人是不是「拉
過來」看一眼?我發現,有一部分人是從來不看的,技術人員也不看。到底為什麼不看?看不起我的文章還是太了解我而覺得沒有必要看?他的心態我沒有辦法了
解,總之,溝通是有障礙的。

「聚集」溝通需要大家坐在一起去探討某些問題,但這可能會浪費參與人的時間。因此我一直以為「推模式」的溝通還是可取的。使用郵件來溝通,想看則看不想看
就不看,尊重接收郵件的人的參與意識。但是發郵件會引來一些誤會。一部分人會把你的郵件當作垃圾,心裡不喜歡你給他發郵件但又不能說出來。一部分人會認為
發郵件的人腦子有毛病或者出風頭,我覺得應該讓每一個人都擺正心態:尊重發郵件的人。歷來都有「槍打出頭鳥」的現象,人在浪頭上,難免遭遇不恰當的言語。
因此,永遠低調和保持沉默便成為一種人生哲學。激進主義是用來推動社會前進的,保守主義是用來維持社會穩定的。我們允許這些同時存在。

由對事演化到對人。

當我們探討問題時一般都是本著「對事不對人」的態度的。對於言者也許是這樣的心裡,但聽者可能認為言者就是「對人不對事」。我們沒有辦法使他消除那種心裡,因為那是他的性格使然。但是我們希望每個人都心胸開闊一些。

在探討關於類爆炸的問題時,我說了一些題外話。

當我和一些同事在探討設計中的缺陷時,發現大家的眼睛都還是明亮的,知道問題所在。不幸的是,幾乎所有的人保都持沉默而不將問題暴露出來。當我暴露問題時,會得到個別人的善意的奉勸:「不要去做」。

3. 用VBA EXCEL大量合並單元格,合並單元格內容保留

根據你的題目,我在如下的數據中,為你寫了一段代碼,在excel 2003中,測試通過
A B
水果 西瓜
芒果
荔枝
蔬菜 南瓜
冬瓜
北瓜
中瓜
寵物 雞


金魚

以下為代碼:

Private Sub CommandButton1_Click()
Worksheets("sheet1").Cells(1, 10).Value = "=counta(b:b)"
z = Worksheets("sheet1").Cells(1, 10).Value
x = 0 '記錄大類小類都存在的行數
y = "" '拼接字元串
For i = 1 To z
If Worksheets("sheet1").Cells(i, 1).Value > 0 And Worksheets("sheet1").Cells(i, 2).Value > 0 Then
If x > 0 And Len(y) > 0 Then
Range("B" & x & ":B" & i - 1).Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Worksheets("sheet1").Cells(x, 2).Value = Left(y, Len(y) - 1)
End If
x = i
y = Worksheets("sheet1").Cells(i, 2).Value & ","
End If
If Worksheets("sheet1").Cells(i, 1).Value = 0 And Worksheets("sheet1").Cells(i, 2).Value > 0 Then
y = y & Worksheets("sheet1").Cells(i, 2).Value & ","
End If
Worksheets("sheet1").Cells(i, 2).Value = ""
Next i
If x > 0 And Len(y) > 0 Then
Range("B" & x & ":B" & i).Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
Worksheets("sheet1").Cells(x, 2).Value = Left(y, Len(y) - 1)
End If

End sub

如果 還有問題 可發信在我郵箱

4. 兩個EXCEL工作簿,分為A和B,我想用函數把A的數據引用到B,有辦法可以實現嗎

例如:在單位的人事資料,在excel中輸入後,由於上級要求在原來的職稱證書的號碼全部再加兩位,即要在每個人的證書號碼前再添上兩位數13,如果一個一個改的話實在太麻煩了,那麼我們可以用下面的辦法,省時又省力:
1)假設證書號在A列,在A列後點擊滑鼠右鍵,插入一列,為B列 ;
2)在B2單元格寫入: ="13" & A2 後回車;
3)看到結果為 13xxxxxxxxxxxxx 了嗎?滑鼠放到B2位置,單元格的下方不是有一個小方點嗎,按著滑鼠左鍵往下拖動直到結束。當你放開滑鼠左鍵時就全部都改好了。
若是在原證書號後面加13 則在B2單元格中寫入:=A2 & 「13」 後回車。
2、如何設置文件下拉窗口的最下面的最近運行的文件名個數?
打開「工具」,選「選項」,再選「常規」,在「最近使用的文件清單」下面的文件個數輸入框中改變文件數目即可。若不在菜單中顯示最近使用的文件名,則將「最近使用的文件清單」前的復選框去掉即可。
3、在EXCEL中輸入如「1-1」、「1-2」之類的格式後它即變成1月1日,1月2日等日期形式,怎麼辦?
這是由於EXCEL自動識別為日期格式所造成,你只要點擊主菜單的「格式」菜單,選「單元格」,再在「數字」菜單標簽下把該單元格的格式設成文本格式就行了。
4、在EXCEL中如何使它象WORD一樣的自動定時保存文件?
點擊「工具」菜單「自動保存」項,設置自動保存文件夾的間隔時間。如果在「工具」菜單下沒有「自動保存」菜單項,那麼執行「工具」菜單下「載入宏...」選上「自動保存」,「確定」。然後進行設置即可。
5、用Excel做多頁的表格時,怎樣像Word的表格那樣做一個標題,即每頁的第一行(或幾行)是一樣的。但是不是用頁眉來完成?
在EXCEL的文件菜單-頁面設置-工作表-列印標題;可進行頂端或左端標題設置,通過按下折疊對話框按鈕後,用滑鼠劃定范圍即可。這樣Excel就會自動在各頁上加上你劃定的部分作為表頭。
6、在Excel中如何設置加權平均?
加權平均在財務核算和統計工作中經常用到,並不是一項很復雜的計算,關鍵是要理解加權平均值其實就是總量值(如金額)除以總數量得出的單位平均值,而不是簡單的將各個單位值(如單價)平均後得到的那個單位值。在Excel中可設置公式解決(其實就是一個除法算式),分母是各個量值之和,分子是相應的各個數量之和,它的結果就是這些量值的加權平均值。
7、如果在一個Excel文件中含有多個工作表,如何將多個工作表一次設置成同樣的頁眉和頁腳?如何才能一次列印多個工作表?
把滑鼠移到工作表的名稱處(若你沒有特別設置的話,Excel自動設置的名稱是「sheet1、sheet2、sheet3.......」),然後點右鍵,在彈出的菜單中選擇「選擇全部工作表」的菜單項,這時你的所有操作都是針對全部工作表了,不管是設置頁眉和頁腳還是列印你工作表。
8、EXCEL中有序號一欄,由於對表格進行調整,序號全亂了,可要是手動一個一個改序號實在太慢太麻煩,用什麼方法可以快速解決?
如果序號是不應隨著表格其他內容的調整而發生變化的話,那麼在製作EXCEL表格時就應將序號這一欄位與其他欄位分開,如在「總分」與「排名」之間空開一列,為了不影響顯示美觀,可將這一空的列欄位設為隱藏,這樣在調整表格(數據清單)的內容時就不會影響序號了。

閱讀全文

與如何利用編程做多文件數據合並相關的資料

熱點內容
資料庫資料庫實例是什麼意思 瀏覽:756
6splus南京東路蘋果專賣店報價 瀏覽:688
vm獲取配置文件中變數 瀏覽:639
三星note2哪個版本好 瀏覽:405
c程序求5 瀏覽:736
文件圖片去水印去斑點 瀏覽:538
電腦編程哪個語言最萬能 瀏覽:915
計算機網路能傳送的信息是 瀏覽:381
gtx950怎麼升級 瀏覽:502
如何外網共享文件夾 瀏覽:665
excel2010表格工具在哪 瀏覽:935
路由器一個賬號密碼忘了怎麼辦 瀏覽:83
根據內容檢索文件 瀏覽:569
索尼手機文件夾 瀏覽:739
win1010194190 瀏覽:722
windows文件夾命名 瀏覽:905
博易大師升級文件在哪裡 瀏覽:415
ghost83手動安裝教程 瀏覽:802
谷歌代碼編寫規范 瀏覽:938
pdf掃描文件歪斜怎樣處理 瀏覽:752

友情鏈接