• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
用Visual
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
用Visual C#实现文件大批量处理
软件发布 用Visual C#实现文件大批量处理
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | C#教程 | 用Visual C#实现文件大批量处理

用Visual C#实现文件大批量处理

 

添加时间: 2007-7-15 3:33:27  作者: c#教程  阅读次数:103   来源: http://www.d9soft.com

 

 

        在科研、企业的数据处理中,有时会涉及大量的文件操作。在大量数据处理的时侯,有时需要进行多对一,或一对多的文件操作,即多个数据文件与一个数据文件进行信息交互,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-10 S3中4 1 3263.5 1.5
13-10 S3中5 2 3311.6 1.6
… … …        

  其中多口井的数据在一个表格中,实际工作中需要将其中每口井的资料选出来生成一个独立的文件,文件后缀为.xc,存在目标文件路径下,生成文件的格式为:

井名 层位 细分小层号 层顶深度 层厚
13-10 S3中4 1 3263.5 1.5
13-10 S3中5 2 3311.6 1.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();

  3、文件拆分按钮响应方法

//定义变量
string winDir;
//文件路径
string filename;
//结果文件名
string [] filename2=new string[300];
//保存生成的文件名
string temp1,temp2,teMP3,temp4;
string strCon;
//连接串
int ii;
//统计生成的结果文件数
ii=1;
winDir=textBox2.Text.Trim()+@"\xcsj.xls;";
//创建一个数据链接
strCon= " Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source ="+winDir+"Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM [Sheet1$] " ;
myConn.Open ( ) ;
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
//创建一个
DataSet对象 DataSet myDataSet = new DataSet ( ) ;
//得到自己的DataSet对象
myDataSet
try
{
 myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
} catch( Exception err)
{
 MessageBox.Show(err.Message);
}
//根据电子表格中第一列的井号读出井名到数组中去
temp1=myDataSet.Tables[0].Rows[0][0].ToString().Trim();
filename2[ii]=temp1;
foreach ( DataRow row in myDataSet.Tables[0].Rows )
{
 if (temp1!=row[0].ToString().Trim() )
 {
  ii=ii+1;
  filename2[ii]=row[0].ToString();
  temp1=row[0].ToString().Trim();
 }
}
//进度条初始化
progressBar1.Step=1;
progressBar1.Minimum=1;
progressBar1.Maximum=ii;
winDir=textBox2.Text.Trim();
for(int k=1;k<=ii;k++)
{
 filename=@winDir+"\\"+filename2[k].Trim()+".xc";
 StreamWriter writer = new StreamWriter(filename);
 writer.WriteLine("层位 细分小层号 层顶深度 层厚");
 foreach( DataRow row in myDataSet.Tables[0].Rows )
 {
  temp1=row[1].ToString().Trim();
  temp2=row[2].ToString().Trim();
  temp3=row[3].ToString().Trim();
  temp4=row[4].ToString().Trim();
  writer.WriteLine(temp1+" "+temp2+" "+temp3+" "+temp4);
 }
 writer.Close();
 progressBar1.PerformStep();
}
myConn.Close();
addListItem("操作结果");
addListItem("共生成"+ii.ToString()+"文件");
addListItem(@"文件位置:F:\wangwei\work\h12\xc路径下");
listBox1.Refresh();

  4、为显示执行结果添加了一上列表框,为方便操作列表框需要为表单类添加一个方法:

private void addListItem(string value)
{
 this.listBox1.Items.Add(value);
}

  五、要点分析

  1、用StreamWriter与StreamReader类进行文件存取操作

  这是一对从 Stream 派生的类,用于字节的输入和输出。其名字空间为 system.io

  2、读取电子表数据

  本程序提供了一种连接电子表文件的方法,必要的名字空间要加好,注意连接串不要写错。

  3、Directory类的GetFiles 方法应用

  可以程序自动的读出文件列表到到一个标准数组中去,以备进一步使用,选取文件的方法有多种,这种方法体现了C#的高效性,值得向大家推荐。

  说明:本文附源程序,在运行的时侯注意输入正确的文件路径。若你机器里面没装.net,也可以直接运行已经编译好的执行文件。在\bin\debug子文件夹下面的Csdata.exe。

 

 

 

 

上下文章:

 

上一篇文章: C#中使用反射的性能分析 下一篇文章: 用Visual C#打造个性化的IE浏览器

相关文章:

  • 卑鄙病毒:加密你的文件勒索你的钱
  • 端午节忠告:要警惕FLASH祝福文件里的包藏祸心
  • Oracle联机日志文件丢失处理方法
  • servlet实现oracle中读出文件并显示
  • ORACLE控制文件的重建

相关软件:

  • 木马文件粉碎机 V3.0
  • 超级秘密文件夹 5.81
  • PE文件加区器 1.0
  • 文件备份专家 V2.55
  • 文件夹看门狗 V3.5 白金版
  • 文件批量更名大师 V3.26

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • ADO.NET的开发场景及传统ADO的处理
  • 利用Visual C#实现Window管道技术
  • C#取得汉字的拼音的首字母
  • 使用C#编写DES加密程序的framework
  • Visual C#编写3D游戏框架示例
  • 用C#和本地Windows API操纵系统菜...
  • 在C#程序设计中使用Win32类库
  • Visual C#中调用Windows服务初探
  • 如何在C#的WinForm中制作饼状图和...
  • C#中实现DataGrid双向排序

C#教程阅读排行

  • 如何在C#的WinForm中制作饼状图和...
  • 浅析C#中图形编程
  • 用C#和本地Windows API操纵系统菜...
  • 彻底剖析C# 2.0泛型类的创建和使用
  • Visual C#编写3D游戏框架示例
  • 使用C#编写DES加密程序的framework
  • Visual C# 2005实现控件中捕获按键
  • Visual C#中调用Windows服务初探
  • C#如何在Form中嵌入并且操作Excel...
  • C#中利用mediaplayer打造mp3播放器

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有