在科研、企業的數據處理中,有時會涉及大量的文件操作。在大量數據處理的時侯,有時需要進行多對一,或一對多的文件操作,即多個數據文件與一個數據文件進行信息交互,Microsoft的.NET開發利器C#提供了前所未有的高開發效率,在文件操作方面也有所體現。筆者基於.NET平台,以C#開發工具,實現了如下功能:
1、多個文本文件合並成一個文件;
2、一個電子表格文件分成多個文件。
一、編程任務描述:
1、從多個文件中讀取數據生成一個文本文件
筆者是處理測井資料的時侯碰到這種編程需求,現有測井資料若干,每口井一個文件,為進一步處理現需要,將這些數據讀到一新文件中去,在實際處理,當然包括一定的計算與篩選及格式化。
多個源文件在源文件路徑下,最終生成的目標文件存在在目標文件路徑下。
例子數據在sourcefile 文件夾下:1.bln,2.bln,3.bln,4,bln,5,bln,6.bln共六個文件,它們合並後生成的total.txt文件在aimfile子文件夾下。
2、從一個文件中讀數據,生成多個文本文件
例子源文件是:xcsj.xls存放在aimfile文件夾下,其數據內容是:
井名層位細分小層號層頂深度層厚13-10S3中41 3263.51.513-10 S3中52 3311.6 1.6… … …
其中多口井的數據在一個表格中,實際工作中需要將其中每口井的資料選出來生成一個獨立的文件,文件後綴為.xc,存在目標文件路徑下,生成文件的格式為:
井名層位 細分小層號層頂深度 層厚13-10S3中41 3263.5 1.513-10 S3中5 2 3311.61.6… … …
生成的的目標文件13-10.xc等也存放在aimfile文件夾下。
二、程序界面
生成一個窗體,窗體上主要添加如下控件:
1、三個按扭:一是合並文件; 一是文件拆分; 一是退出;
2、一個列表框 用來顯示程序執行情況
3、兩個文本框,分別用來輸入源文件路徑與目標文件路徑;
4、一個進度條,用來指示,程序的執行進度;
程序界面如下:
三、源程序主要代碼:
1、名字空間
using System;using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; //使用StreamWriter與StreamReader必須加的Namespaceusing System.Data.OleDb; using System.Data.SqlClient; //讀電子表格文件必須加的Namespace
2、文件合並按鈕響應方法
string winDir1; //源文件路徑 string winDir2; //目標文件路徑 string temp1; int ii; winDir1=textBox1.Text.Trim(); winDir2=textBox2.Text.Trim()+"\\total.txt"; //獲取winDir1路徑下所有文件列表 string[] dirs = Directory.GetFiles(winDir1); //建立或打開目標文件 StreamWriter writer = new StreamWriter(winDir2); writer.WriteLine("這是匯總文件頭"); writer.WriteLine("這是匯總文件第二行"); ii=0; foreach(string dir in dirs) { StreamReader reader=new StreamReader(dir); try { reader.ReadLine(); do { temp1=reader.ReadLine(); temp1=temp1.Trim(); writer.WriteLine(temp1); } while(reader.Peek() != -1); ii=ii+1; } catch( Exception err) { MessageBox.Show(err.Message); } finally { reader.Close(); } } addListItem("合並操作結束"); addListItem("本次操作共有"+ii.ToString()+"個文件合並到文件total.txt中去"); addListItem("total.txt文件存放位置為"+textBox2.Text); writer.Close();
本文示例代碼或素材下載