精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用ADO.NET實現txt與Excel的互相轉換

開發(fā) 后端
將TXT文檔與Excel之間進行相互轉換可以幫助大家在開發(fā)上有很大作用。txt文本是沒有格式的,但是excel文檔是有格式的,將沒有格式的東西轉換為有格式的東西,可以方便別人閱讀。

  在園子里看過很多文章,關于設計模式,關于架構等等,我在這里談談一些軟件的功能,為什么需要這樣的功能。

  我前段時間寫了一個TXT與EXCEL為什么要互相轉換的功能,可能有人會問,這樣的功能有什么作用?是的,這小功能在軟件開發(fā)上有很大的作用的。txt文本是沒有格式的,但是excel文檔是有格式的,將沒有格式的東西轉換為有格式的東西,可以方便別人閱讀,除此之外,很多軟件的服務端傳給客戶端的東西是沒有格式的東西,就是一個字符串,客戶端接收到這個字符串,如何格式化,變成我們需要的東西,比如說excel文檔。反之,有個excel文檔,也要將它變成字符串才能順利地發(fā)給服務端,或者發(fā)給調用者。當然,可能有人會說傳字符串的方式非常落后,現在都有webservice這個標準化的東西,webservice是有格式的,而且很好傳輸與解析,但是如果你后臺是用C語言寫,或者是更低級語言編寫的,并沒有類似于webservice的東西,那就只能傳輸字符流了。其實webservice傳輸的也是wsdl的文本,它本身也是一堆字符而已,只不過是通過一些組件變成我們需要的東西,例如類。webservice只是一個通用的標準,也可以制定屬于自己的標準。

  EXECL轉換TXT:

  首先,需要讀取EXCEL文檔,讀取excel文檔可以通過ADO.NET的Connection。

  1.   /// <summary>/// 獲取excel  
  2. /// </summary>///   
  3. <param name="excelPath"></param>///  
  4.  <returns></returns> 
  5. privateOleDbConnection getCon(stringexcelPath){
  6. try{stringstrConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
  7. "Data Source="+ excelPath + ";"+ "Extended Properties=Excel 8.0;";  
  8. OleDbConnection conn = newOleDbConnection(strConn);conn.Open();returnconn;}
  9. catch(Exception ex){
  10. thrownewArgumentException("打開excel失敗", ex.Message);}} 

  然后,需要讀取excel文檔的每一頁,與讀取excel的內容

  1. /// <summary>/// 獲取excel頁  
  2. /// </summary>///   
  3. <param name="excelPath"></param> 
  4. /// <returns></returns>publicstring[]   
  5. getSheets(stringexcelPath){OleDbConnection conn = getCon(excelPath);
  6. try{DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, newobject[] {   
  7. null, null, null, "Table"});  
  8. string[] strTableNames = newstring[dtSheetName.Rows.Count];  
  9. inti = 0;for(intk = 0; k <dtSheetName.Rows.Count; k++){  
  10. //把有下劃線的excel頁去掉
  11. if(!dtSheetName.Rows[k]["TABLE_NAME"].ToString().Contains("_")){strTableNames[i] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();i++;}}
  12. returnstrTableNames;} catch(Exception ex){ throwex; }finally{ conn.Close(); }}   
  13. /// <summary>/// 獲取excel的數據  
  14. /// </summary>///   
  15. <param name="excelPath"></param>/// 
  16. <param name="sheetName"></param>/// 
  17. <returns></returns>publicDataTable GetExcelDB(stringexcelPath,stringsheetName){OleDbConnection conn = getCon(excelPath);
  18. try{DataTable dt = newDataTable();OleDbDataAdapter myada = null;
  19. stringstrExcel = "select * from ["+ sheetName + "]";myada = newOleDbDataAdapter(strExcel, conn);
  20. myada.Fill(dt);returndt;}catch(Exception ex){ throwex; }finally{ conn.Close(); }} 

  ***,生成TXT文本,因為txt文本是沒有格式的,因此我們需要制定一些標準,我設定每個單元格的長度都為30個字節(jié),excel的每一行對應txt的一行。如果單元格的長度是不一樣的,可以制定一個list。有了標準,這樣在txt轉excel是才能成功。這里需要注意一點,中文字符與英文字符的節(jié)長度是不一樣的,中文占兩個字節(jié),而英文是占1個字節(jié),因此在轉換的時候需要多做一些工作。

  

  1. /// <summary> 
  2. /// 生成txt  
  3. /// </summary> 
  4. /// <param name="sender"></param> 
  5. /// <param name="e"></param> 
  6. privatevoidbtnGenerate_Click(objectsender, EventArgs e){
  7. if(txtExcelPath.Text.Trim() == ""){MessageBox.Show("請導入excel");
  8. return;}
  9. if(cboSheet.Text.Trim() == ""){MessageBox.Show("沒有存在的excel頁");  
  10. return;}stringcolName = "";stringrowText = "";  
  11. StringBuilder strbui = newStringBuilder();   
  12. try{DataTable dt = GetExcelData.ExcelObj.GetExcelDB(txtExcelPath.Text.Trim(), cboSheet.Text.Trim());  
  13. for(inti = 0; i <dt.Columns.Count; i++){stringtempName = dt.Columns[i].ColumnName.Trim();  
  14. byte[] byte_len = Encoding.Default.GetBytes(tempName);
  15. if(byte_len.Length <30){intk = 30 - byte_len.Length;for(intt = k; t >0; t--){tempName += " ";}}  
  16. else{byte[] CutStr_Bytes1 = newbyte[30];  
  17. Array.Copy(byte_len, 0, CutStr_Bytes1, 0, 30);  
  18. tempName = myEncoding.GetString(CutStr_Bytes1);}colName += tempName; }  
  19. for(inti = 0; i <dt.Rows.Count; i++){
  20. for(intj = 0; j <dt.Columns.Count; j++){
  21. stringtempName = dt.Rows[i][j].ToString();byte[] byte_len = Encoding.Default.GetBytes(tempName);
  22. if(byte_len.Length <30){intk = 30 - byte_len.Length;for(intt = k; t >0; t--){tempName += " ";}}
  23. else{byte[] CutStr_Bytes1 = newbyte[30];
  24. Array.Copy(byte_len, 0, CutStr_Bytes1, 0, 30);
  25. tempName = myEncoding.GetString(CutStr_Bytes1);} 
  26. strbui.Append(tempName);}strbui.Append(" ");}rowText = strbui.ToString(); }  
  27. catch(Exception ex){MessageBox.Show(ex.Message);}
  28. try{SaveFileDialog saveFileDialog = newSaveFileDialog();  
  29. saveFileDialog.Filter = "文本文件|*.txt";  
  30. if(saveFileDialog.ShowDialog() == DialogResult.OK){
  31. StreamWriter streamWriter = newStreamWriter(saveFileDialog.FileName, false, System.Text.Encoding.GetEncoding("gb2312"));  
  32. streamWriter.Write(colName + " "+ rowText);streamWriter.Close();}}  
  33. catch(Exception ex){MessageBox.Show("保存txt失敗"+ ex.Message);  
  34. }}  

   TXT轉換EXECL:在txt轉換excel的過程中,首先需要獲取txt文本

  1.  /// <summary>///   
  2. /// </summary>StreamReader reader = null;  
  3. /// <summary>///   
  4. /// </summary>Encoding myEncoding = Encoding.GetEncoding("GB2312");  
  5. /// <summary> 
  6. /// 導入txt/// </summary> 
  7. /// <param name="sender"></param> 
  8. /// <param name="e"></param>privatevoidbtnImportTxt_Click(objectsender, EventArgs e){  
  9. OpenFileDialog openFileDialog = newOpenFileDialog();  
  10. openFileDialog.InitialDirectory = "D:\";  
  11. openFileDialog.Filter = "TXT文件|*.txt";  
  12. openFileDialog.RestoreDirectory = true;openFileDialog.FilterIndex = 1;  
  13. if (openFileDialog.ShowDialog() == DialogResult.OK){string fName = openFileDialog.FileName;
  14. textBox2.Text = fName;reader = new StreamReader(fName, System.Text.Encoding.GetEncoding("GB2312")); }}  

 

  然后對文本進行處理,用 reader.ReadLine()一行行地往下讀,每讀一行處理一行,直到讀完為止。處理的時候需要把字符串均等平分,每30個字節(jié)寫一個單元格。

  1. /// <summary> 
  2. /// 把字符串均等平分/// </summary> 
  3. /// <param name="SourceString"></param> 
  4. /// <returns></returns>privatestring[] spitText(stringSourceString){intlength = 30;  
  5. intlen = 0;byte[] SourceStr_Bytes = myEncoding.GetBytes(SourceString);  
  6. byte[] CutStr_Bytes1 = newbyte[length];   
  7. if(SourceStr_Bytes.Length % length != 0)len = SourceStr_Bytes.Length / length + 1;  
  8. elselen = SourceStr_Bytes.Length / length;string[] array = newstring[len];inti, j = 0;  
  9. for(i = 0; (i + length) <= SourceStr_Bytes.Length &&SourceStr_Bytes.Length >= i; ){  
  10. Array.Copy(SourceStr_Bytes, i, CutStr_Bytes1, 0, length);array[j] = myEncoding.GetString(CutStr_Bytes1);j++;ii = i + length;}  
  11. if(SourceStr_Bytes.Length % length != 0){
  12. Array.Copy(SourceStr_Bytes, SourceStr_Bytes.Length - i, CutStr_Bytes1, 0, length);array[j] = myEncoding.GetString(CutStr_Bytes1);}returnarray;}   
  13. /// <summary> 
  14. /// 生成txt  
  15. /// </summary> 
  16. /// <param name="sender"></param> 
  17. /// <param name="e"></param>
  18. privatevoidbtnGenTxt_Click(objectsender, EventArgs e){SaveFileDialog saveFileDialog = newSaveFileDialog();saveFileDialog.Filter = "文本文件|*.xls";
  19. if(saveFileDialog.ShowDialog() == DialogResult.OK){StreamWriter sw = newStreamWriter(saveFileDialog.FileName, true, System.Text.Encoding.GetEncoding("GB2312"));stringstr = "";  
  20. if(reader == null){MessageBox.Show("請導入txt");return;}try{  
  21. //寫標題stringheadText = reader.ReadLine();  
  22. string[] array = spitText(headText);  
  23. for(inti = 0; i <array.Length; i++){array[i] += " ";str += array[i];}sw.WriteLine(str);  
  24. //寫內容stringtext;while((text = reader.ReadLine()) != null){stringtempStr = "";  
  25. string[] arrayText = spitText(text);  
  26. for(intf = 0; f <arrayText.Length; f++){tempStr += arrayText[f] + " ";}sw.WriteLine(tempStr);}sw.Close();}  
  27. catch(Exception ex){MessageBox.Show(ex.Message);}finally{sw.Close();}}}  

 

  好了,到這里,TXT月EXCEL的互相轉換功能就做好了,源碼沒找到地方上傳,改天找個好的網盤上傳。

原文鏈接:http://www.cnblogs.com/suyangbin/archive/2011/11/29/2266938.html

【編輯推薦】

  1. 詳細述說ADO超時相關問題介紹
  2. 漫談ADO.NET連接池相關注意問題說明
  3. 如何更好的進行ADO.NET連接池連接
  4. 剖析ADO.NET連接池優(yōu)缺點
  5. 談談ADO.NET數據庫連接池創(chuàng)建和分配

 

責任編輯:彭凡 來源: 博客園
相關推薦

2011-05-20 11:31:07

ADO.NET

2009-12-31 16:09:22

ADO與ADO.NET

2009-11-11 13:59:15

ADO.NET與ADO

2009-12-28 15:11:36

ADO.NET專家

2009-11-04 17:03:55

ADO.NET Exc

2009-11-03 16:37:10

2011-06-02 09:39:29

ADO.NET

2009-12-30 15:11:35

ADO.NET數據

2009-09-14 13:37:25

LINQ ADO.NE

2009-11-11 10:55:10

ADO.NET對象

2009-12-21 11:00:05

ADO.NET 結構

2011-10-09 13:38:14

數據庫

2009-12-21 17:06:41

ADO.NET DbP

2009-11-04 14:54:42

ADO.NET與Pow

2009-11-03 14:22:10

ADO.NET Exc

2011-03-04 11:08:46

ADO.NET數據庫

2009-12-25 15:09:11

ADO.NET選項

2024-06-18 13:17:02

數據庫框架

2010-01-04 10:48:30

ADO.NET特色

2009-07-06 10:43:51

ADO.NET
點贊
收藏

51CTO技術棧公眾號

一级特黄aaa| 97精品人妻一区二区三区蜜桃| gogogo高清在线观看免费完整版| 免费日本视频一区| 美女性感视频久久久| 无码国产精品一区二区免费式直播| 亚洲黄色免费av| 中文字幕综合网| 久久久久久99| 99热这里只有精品3| 久久免费黄色| 久久久久久美女| 岛国片在线免费观看| 国产精品天天看天天狠| 欧美日韩三级一区| 国产视频九色蝌蚪| 超碰在线免费播放| 久久精品一区二区三区不卡| 97伦理在线四区| 91丨九色丨海角社区| 最新精品国产| 中文字幕精品国产| 黄色污在线观看| 免费一级欧美在线大片| 欧美艳星brazzers| 成年人视频观看| 欧美性video| 国产精品久久久久久久久久久免费看 | 久久中文字幕国产| 欧美一级视频免费看| 午夜激情视频在线观看| 99精品久久只有精品| 亚洲精品免费网站| 国产精品家庭影院| 国产97免费视| 五月天婷婷丁香| 在线国产一区| 在线日韩日本国产亚洲| 精品人妻一区二区三区日产乱码卜| 国产一区二区三区视频在线| 欧美中文字幕一区| 国内精品视频在线| 国产又色又爽又高潮免费| 正在播放日韩精品| 亚洲成人av资源| 无码熟妇人妻av在线电影| 精品孕妇一区二区三区| 国产精品天天摸av网| 日韩经典在线视频| 欧美777四色影视在线| 波多野结衣中文一区| 成人资源av| 亚洲免费黄色片| 国产成人精品亚洲午夜麻豆| 91免费版网站入口| 国产农村妇女毛片精品| 激情文学综合丁香| 欧美大片免费观看在线观看网站推荐| 波兰性xxxxx极品hd| 99久久99久久精品国产片果冰| 亚洲最新av在线网站| 老熟妇一区二区| 国产一区二区三区探花| 亚洲性视频网址| 中文字幕有码在线播放| 狠狠色丁香婷婷综合影院| 亚洲天堂一区二区三区| www.99热| 99精品视频精品精品视频| 日韩在线观看免费av| 91高清免费观看| 欧美三级乱码| 欧美在线视频免费| 中文字幕 国产| 国产成人在线免费观看| 国产精品日韩一区二区三区 | 久久国产夜色精品鲁鲁99| 国产欧美日韩专区发布| 国产人妖在线播放| 成人av资源站| 欧美日韩精品免费观看视一区二区| 国产免费av在线| 国产精品久久影院| 99热久久这里只有精品| 亚洲成人久久影院| 久久精视频免费在线久久完整在线看| 日本一道本视频| 91欧美国产| 欧美黑人极品猛少妇色xxxxx| 精品小视频在线观看| 午夜影院日韩| 成人久久久久久久| 色丁香婷婷综合久久| 久久综合网色—综合色88| 一区二区三区四区欧美| 白白色在线观看| 色欧美日韩亚洲| 小日子的在线观看免费第8集| 超碰97久久| 国产亚洲欧美视频| 久久成人在线观看| 日本色综合中文字幕| www日韩av| 福利成人在线观看| 亚洲一区二区三区影院| 男人女人黄一级| 国产精品18hdxxxⅹ在线| 国产午夜一区二区| 国产波霸爆乳一区二区| 欧美国产丝袜视频| 久操成人在线视频| 久久视频免费在线| www在线看| 欧美日韩一二区| 日韩av无码一区二区三区不卡| 欧洲grand老妇人| 久久久久久免费精品| 亚洲国产精品yw在线观看| 年下总裁被打光屁股sp | 成在在线免费视频| 欧美色片在线观看| 欧美日韩国产中文| 成人影视免费观看| 欧美婷婷在线| 91精品视频在线播放| 激情在线视频| 精品国产乱码久久久久久婷婷 | 日日狠狠久久| 亚洲欧美日韩天堂一区二区| 日韩精品在线观看一区| 久久久久久久久久久久久久久久av | 国产精品蜜臀在线观看| 国自产拍偷拍精品啪啪一区二区| 免费成人在线看| 中文字幕中文字幕在线十八区| 图片区小说区区亚洲影院| 手机精品视频在线| 日韩精品永久网址| 一区二区三区高清国产| 男人的天堂一区| 国产不卡一区视频| 日本在线视频www色| 亚洲成人a级片| 深夜福利一区二区| 亚洲大尺度在线观看| 久久久精品天堂| 国产熟女高潮视频| 久9久9色综合| 国产精品麻豆va在线播放| 国产香蕉在线| 欧美视频三区在线播放| 黄色av免费播放| 久久国内精品视频| 国产成人三级视频| 一区中文字幕| 国内精品视频久久| 色视频在线看| 日韩av一二三四| 老司机成人在线| 隔壁老王国产在线精品| 日本激情视频网站| 亚洲mv在线观看| 一级做a爰片毛片| 亚洲在线黄色| 日本在线视频一区| 久久精品资源| 欧美乱大交xxxxx另类电影| 国产免费的av| 亚洲大片精品永久免费| 亚洲国产第一区| 日韩精品视频网| 一区二区三区四区视频在线| 天天人人精品| 黄色在线免费| 精品国产一区二区在线观看| 久久久久无码国产精品| 99国产精品久久久久| 成人亚洲视频在线观看| 国产精品久久久久久麻豆一区软件 | 欧美成人黑人xx视频免费观看| 亚洲av永久无码国产精品久久| 无吗不卡中文字幕| 久久久精品国产网站| 精品人妻午夜一区二区三区四区| 亚洲成人精品一区二区| 美女被到爽高潮视频| 国产自产高清不卡| 久久av综合网| 波多野结衣一区| 99c视频在线| 日韩性xxx| 欧美乱妇40p| 国产一级在线观看| 欧美一个色资源| 精品视频一二三区| 一区二区三区日韩精品视频| www.久久av| 国产精品亚洲第一| 欧美黑人又粗又大又爽免费| 欧美激情精品久久久六区热门| 精品麻豆av| 国产精品18| 国产盗摄xxxx视频xxx69| 日本中文字幕中出在线| 一本一本久久a久久精品牛牛影视| 精品国精品国产自在久不卡| 91福利精品视频| 国产精品成人国产乱| 中文字幕在线免费不卡| 国产偷人妻精品一区| 福利电影一区二区三区| 黑森林精品导航| 国产精品一二| 激情五月五月婷婷| 日韩成人免费| 免费看成人片| 国产精品xxxav免费视频| 成人高清视频观看www| 伊人久久在线| 911精品美国片911久久久| 国产亚洲精品久久| 亚洲大尺度视频| 欧美色电影在线| 茄子视频成人在线观看 | 色婷婷综合久色| 97成人资源站| 国产精品美女久久久久aⅴ | 国产精品久久久久婷婷二区次| 亚洲一区二区三区黄色| 国产在线不卡一区| 天天插天天操天天射| 亚洲欧美不卡| 黄色一级片在线看| 欧美福利专区| 日韩人妻精品一区二区三区| 成人在线免费观看视频| 欧美一级日本a级v片| 久久超级碰碰| 国产精品乱码| 国产乱论精品| 国产伦精品一区二区| 51亚洲精品| 岛国视频一区免费观看| 视频精品一区二区三区| 99re视频在线| 日韩一区二区三区精品视频第3页| 成人免费视频网| 日韩成人免费av| 成人免费观看网址| 精品视频一二| 99热在线国产| 国产精品白浆| 国产精品无码永久免费888| 粗大的内捧猛烈进出视频| 国产一区二区三区免费观看| 亚洲天堂av一区二区| 韩国精品在线观看| 亚洲热在线视频| 国产精品一区二区x88av| 中文字幕avav| 不卡av在线网| 熟女俱乐部一区二区视频在线| 久久嫩草精品久久久久| 亚洲一区二区三区日韩| 中文无字幕一区二区三区 | 在线观看xxx| 亚洲欧洲免费视频| 久久日韩粉嫩一区二区三区| 国产a视频免费观看| 日精品一区二区三区| youjizzxxxx18| 精品一二三四在线| 国产精品熟女一区二区不卡| 久久久久国产精品无码免费看| 久久先锋影音| 三级a三级三级三级a十八发禁止| 美国三级日本三级久久99| 国产成人在线综合| 成人一区在线看| 亚洲中文字幕一区| 国产欧美视频在线观看| 最新黄色av网址| 亚洲综合网站在线观看| 亚州国产精品视频| 欧美中文字幕一区二区三区亚洲| 国产伦精品一区二区三区免.费| 欧美一级生活片| 手机看片一区二区三区| 一区二区三区视频免费在线观看 | 日本精品二区| 国产精品自偷自拍| 精品国产三级电影在线观看| 三区在线观看| 久久精品久久久久| 爱啪啪综合导航| 性xxxxfreexxxxx欧美丶| 欧美一级视频在线观看| 成人国产激情| 国产精品一区二区三区不卡| 亚洲小说图片视频| 国产又粗又大又爽的视频| 国产情侣久久| 日本一区二区三区在线免费观看| 91久色porny| 一区视频免费观看| 在线视频综合导航| 日韩中文字幕影院| 久久精品国产欧美亚洲人人爽| 男人天堂视频在线观看| 国产在线观看精品| 精品国产一区二区三区久久久樱花| 国产精品88久久久久久妇女| 久久一区国产| 中文字幕一区二区三区乱码不卡| 国产精品视频线看| 国产超碰人人爽人人做人人爱| 91精品国产麻豆| 国产精品视频二区三区| 97高清免费视频| 日本少妇精品亚洲第一区| 婷婷精品国产一区二区三区日韩| 亚洲伦理一区| 亚洲成人精品在线播放| 一色屋精品亚洲香蕉网站| 亚洲AV无码成人精品区东京热| 精品精品国产高清一毛片一天堂| 麻豆影视在线观看_| 国产精品久久一区| 在线亚洲a色| 337p粉嫩大胆噜噜噜鲁| 成人h动漫精品一区二| 国产精品老熟女一区二区| 欧美猛男超大videosgay| 国产永久av在线| 日本欧美精品在线| 中日韩免视频上线全都免费| 五十路熟女丰满大屁股| 成人性生交大片免费看中文网站| 青青草激情视频| 日韩一区和二区| 羞羞的视频在线观看| 99精彩视频在线观看免费| 亚洲成av人电影| 久久久久久综合网| 一区二区三区资源| 精品久久人妻av中文字幕| 蜜臀久久99精品久久久久久宅男| 亚洲我射av| 久久久久久久久久久久久国产| 国产美女在线观看一区| 欧美日韩亚洲国产另类| 欧美一区二区三区在| av毛片在线| 国产传媒一区| 国产日韩欧美| 美女久久久久久久久久| 欧美亚洲国产一卡| 午夜在线视频| 91精品视频专区| 国模 一区 二区 三区| 韩国一区二区三区四区| 亚洲午夜影视影院在线观看| 日韩专区第一页| 国产成人欧美在线观看| 青青草成人影院| 91在线第一页| 婷婷综合在线观看| 久久经典视频| 成人免费在线网址| 欧美精选在线| 国产精品无码永久免费不卡| 在线视频国产一区| 毛片在线播放a| 精品产品国产在线不卡| 久久综合影视| 神马午夜精品91| 亚洲国产一区二区三区四区| 精品3atv在线视频| 亚洲精品视频一二三| 国产99精品视频| 神马久久久久久久 | 久久久精品国产免大香伊| 黄色在线免费观看| 色哟哟亚洲精品一区二区| 亚洲日本中文| mm131丰满少妇人体欣赏图| 91福利区一区二区三区| 无遮挡的视频在线观看| 97久久天天综合色天天综合色hd| 亚洲毛片在线| 欧美日韩中文字幕视频| 日韩女优制服丝袜电影| 97电影在线看视频| 成人网在线视频| 影音先锋久久| 少妇一级黄色片| 精品av久久707| 国产精品蜜月aⅴ在线| 欧美久久久久久久久久久久久久| 国产欧美一区二区精品忘忧草|