千家信息网

如何用ADO.NET实现txt与Excel的互相转换

发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,本篇文章为大家展示了如何用ADO.NET实现txt与Excel的互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在园子里看过很多文章,关于设计模式,关于
千家信息网最后更新 2025年02月13日如何用ADO.NET实现txt与Excel的互相转换

本篇文章为大家展示了如何用ADO.NET实现txt与Excel的互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在园子里看过很多文章,关于设计模式,关于架构等等,我在这里谈谈一些软件的功能,为什么需要这样的功能。

我前段时间写了一个TXT与EXCEL为什么要互相转换的功能,可能有人会问,这样的功能有什么作用?是的,这小功能在软件开发上有很大的作用的。txt文本是没有格式的,但是excel文档是有格式的,将没有格式的东西转换为有格式的东西,可以方便别人阅读,除此之外,很多软件的服务端传给客户端的东西是没有格式的东西,就是一个字符串,客户端接收到这个字符串,如何格式化,变成我们需要的东西,比如说excel文档。反之,有个excel文档,也要将它变成字符串才能顺利地发给服务端,或者发给调用者。当然,可能有人会说传字符串的方式非常落后,现在都有webservice这个标准化的东西,webservice是有格式的,而且很好传输与解析,但是如果你后台是用C语言写,或者是更低级语言编写的,并没有类似于webservice的东西,那就只能传输字符流了。其实webservice传输的也是wsdl的文本,它本身也是一堆字符而已,只不过是通过一些组件变成我们需要的东西,例如类。webservice只是一个通用的标准,也可以制定属于自己的标准。

EXECL转换TXT:

首先,需要读取EXCEL文档,读取excel文档可以通过ADO.NET的Connection。

/// /// 获取excel  /// ///   ///    privateOleDbConnection getCon(stringexcelPath){try{stringstrConn = "Provider=Microsoft.Jet.OLEDB.4.0;"+ "Data Source="+ excelPath + ";"+ "Extended Properties=Excel 8.0;";  OleDbConnection conn = newOleDbConnection(strConn);conn.Open();returnconn;}catch(Exception ex){thrownewArgumentException("打开excel失败", ex.Message);}}

然后,需要读取excel文档的每一页,与读取excel的内容

/// /// 获取excel页  /// ///    /// publicstring[]   getSheets(stringexcelPath){OleDbConnection conn = getCon(excelPath);try{DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, newobject[] {   null, null, null, "Table"});  string[] strTableNames = newstring[dtSheetName.Rows.Count];  inti = 0;for(intk = 0; k /// 获取excel的数据  /// ///   /// /// publicDataTable GetExcelDB(stringexcelPath,stringsheetName){OleDbConnection conn = getCon(excelPath);try{DataTable dt = newDataTable();OleDbDataAdapter myada = null;stringstrExcel = "select * from ["+ sheetName + "]";myada = newOleDbDataAdapter(strExcel, conn);myada.Fill(dt);returndt;}catch(Exception ex){ throwex; }finally{ conn.Close(); }}

***,生成TXT文本,因为txt文本是没有格式的,因此我们需要制定一些标准,我设定每个单元格的长度都为30个字节,excel的每一行对应txt的一行。如果单元格的长度是不一样的,可以制定一个list。有了标准,这样在txt转excel是才能成功。这里需要注意一点,中文字符与英文字符的节长度是不一样的,中文占两个字节,而英文是占1个字节,因此在转换的时候需要多做一些工作。

///  /// 生成txt  ///  ///  ///  privatevoidbtnGenerate_Click(objectsender, EventArgs e){if(txtExcelPath.Text.Trim() == ""){MessageBox.Show("请导入excel");return;}if(cboSheet.Text.Trim() == ""){MessageBox.Show("没有存在的excel页");  return;}stringcolName = "";stringrowText = "";  StringBuilder strbui = newStringBuilder();   try{DataTable dt = GetExcelData.ExcelObj.GetExcelDB(txtExcelPath.Text.Trim(), cboSheet.Text.Trim());  for(inti = 0; i 0; t--){tempName += " ";}}  else{byte[] CutStr_Bytes1 = newbyte[30];  Array.Copy(byte_len, 0, CutStr_Bytes1, 0, 30);  tempName = myEncoding.GetString(CutStr_Bytes1);}colName += tempName; }  for(inti = 0; i 0; t--){tempName += " ";}}else{byte[] CutStr_Bytes1 = newbyte[30];Array.Copy(byte_len, 0, CutStr_Bytes1, 0, 30);tempName = myEncoding.GetString(CutStr_Bytes1);} strbui.Append(tempName);}strbui.Append(" ");}rowText = strbui.ToString(); }  catch(Exception ex){MessageBox.Show(ex.Message);}try{SaveFileDialog saveFileDialog = newSaveFileDialog();  saveFileDialog.Filter = "文本文件|*.txt";  if(saveFileDialog.ShowDialog() == DialogResult.OK){StreamWriter streamWriter = newStreamWriter(saveFileDialog.FileName, false, System.Text.Encoding.GetEncoding("gb2312"));  streamWriter.Write(colName + " "+ rowText);streamWriter.Close();}}  catch(Exception ex){MessageBox.Show("保存txt失败"+ ex.Message);  }}

TXT转换EXECL:在txt转换excel的过程中,首先需要获取txt文本

 /// ///   /// StreamReader reader = null;  /// ///   /// Encoding myEncoding = Encoding.GetEncoding("GB2312");  ///  /// 导入txt///  ///  /// privatevoidbtnImportTxt_Click(objectsender, EventArgs e){  OpenFileDialog openFileDialog = newOpenFileDialog();  openFileDialog.InitialDirectory = "D:\";  openFileDialog.Filter = "TXT文件|*.txt";  openFileDialog.RestoreDirectory = true;openFileDialog.FilterIndex = 1;  if (openFileDialog.ShowDialog() == DialogResult.OK){string fName = openFileDialog.FileName;textBox2.Text = fName;reader = new StreamReader(fName, System.Text.Encoding.GetEncoding("GB2312")); }}

然后对文本进行处理,用 reader.ReadLine()一行行地往下读,每读一行处理一行,直到读完为止。处理的时候需要把字符串均等平分,每30个字节写一个单元格。

///  /// 把字符串均等平分///  ///  /// privatestring[] spitText(stringSourceString){intlength = 30;  intlen = 0;byte[] SourceStr_Bytes = myEncoding.GetBytes(SourceString);  byte[] CutStr_Bytes1 = newbyte[length];   if(SourceStr_Bytes.Length % length != 0)len = SourceStr_Bytes.Length / length + 1;  elselen = SourceStr_Bytes.Length / length;string[] array = newstring[len];inti, j = 0;  for(i = 0; (i + length) <= SourceStr_Bytes.Length &&SourceStr_Bytes.Length >= i; ){  Array.Copy(SourceStr_Bytes, i, CutStr_Bytes1, 0, length);array[j] = myEncoding.GetString(CutStr_Bytes1);j++;ii = i + length;}  if(SourceStr_Bytes.Length % length != 0){Array.Copy(SourceStr_Bytes, SourceStr_Bytes.Length - i, CutStr_Bytes1, 0, length);array[j] = myEncoding.GetString(CutStr_Bytes1);}returnarray;}   ///  /// 生成txt  ///  ///  /// privatevoidbtnGenTxt_Click(objectsender, EventArgs e){SaveFileDialog saveFileDialog = newSaveFileDialog();saveFileDialog.Filter = "文本文件|*.xls";if(saveFileDialog.ShowDialog() == DialogResult.OK){StreamWriter sw = newStreamWriter(saveFileDialog.FileName, true, System.Text.Encoding.GetEncoding("GB2312"));stringstr = "";  if(reader == null){MessageBox.Show("请导入txt");return;}try{  //写标题stringheadText = reader.ReadLine();  string[] array = spitText(headText);  for(inti = 0; i 

好了,到这里,TXT月EXCEL的互相转换功能就做好了,源码没找到地方上传,改天找个好的网盘上传。

上述内容就是如何用ADO.NET实现txt与Excel的互相转换,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

字符 东西 文本 格式 功能 字符串 文档 一行 标准 内容 字节 单元 文件 软件 长度 传输 处理 生成 作用 客户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 一个人能开软件开发公司嘛 湖南六度网络技术 黑龙江软件开发中心 浙江移动大带宽服务器 戴尔r410服务器值得买吗 海外网络技术解决方案 酒店点菜系统数据库表 用友系统管理服务器是啥 微信小程序软件开发任务书 年检站数据库满 叫号机一般用什么软件开发 生物比较好的文献数据库 漫威对决有几个服务器 载入服务器失败 药智网药品标准查询数据库 国家医疗保障信息数据库 软件开发教育地址 某单位人事管理系统数据库 软件开发派工单 实验五数据库完整性实验报告 厦门思百达网络技术有限公司 网络安全进校园视频下载 网络安全治理存在的问题 下列属于云数据库产品的是 数据库的安全保护技术 小学生校园网络安全教育活动 物联网传感器网络技术 网络安全法受哪些事件驱动 数据库必须追踪客户和他们的预订 从事网络安全专业的毕业生
0