C#實(shí)現(xiàn)把txt文本數(shù)據(jù)快速讀取到excel中
今天預(yù)實(shí)現(xiàn)一功能,將txt中的數(shù)據(jù)轉(zhuǎn)到excel表中,做為matlab的數(shù)據(jù)源。搜集一些c#操作excel的程序。步驟如下:
下載一個(gè)Microsoft.Office.Interop.Excel.dll 在項(xiàng)目中引用。
編寫代碼如下:
string path = "c://date//xyu.txt";
StreamReader sr = new StreamReader(path);
string strLine = sr.ReadLine();
int rowNum = 1;
object missing = System.Reflection.Missing.Value;
ApplicationClass app = new ApplicationClass();
app.Application.Workbooks.Add(true);
Workbook book = (Workbook)app.ActiveWorkbook;
Worksheet sheet = (Worksheet)book.ActiveSheet;
while (!string.IsNullOrEmpty(strLine))
{
string[] tempArr;
tempArr = strLine.Split(',');
for (int k = 1; k <= tempArr.Length; k++)
{
sheet.Cells[rowNum, k] = tempArr[k - 1];
}
strLine = sr.ReadLine();
rowNum++;
}
//保存excel文件
book.SaveCopyAs("D://source.xls");
//關(guān)閉文件
book.Close(false, missing, missing);
//退出excel
app.Quit();
MessageBox.Show("轉(zhuǎn)化成功!");
以上代碼可以實(shí)現(xiàn)功能,由于txt中的數(shù)據(jù)有60501行,數(shù)據(jù)量太大。我估算了一下,用以上代碼轉(zhuǎn)到excel要用大約2-3分鐘。我一共要轉(zhuǎn)9個(gè)txt。一共要用20多分鐘。這樣作出系統(tǒng)顯然是讓人難以忍受的。接著找資料,發(fā)現(xiàn)用rang方法可以提高速率。只用大約3-4秒鐘的時(shí)間,提高效率幾十倍。代碼如下:
string path = "c://date//xyu.txt";
StreamReader sr = new StreamReader(path);
string strLine = sr.ReadLine();
int rowNum = 1;
object missing = System.Reflection.Missing.Value;
ApplicationClass app = new ApplicationClass();
app.Application.Workbooks.Add(true);
Workbook book = (Workbook)app.ActiveWorkbook;
Worksheet sheet = (Worksheet)book.ActiveSheet;
Range r = sheet.get_Range("A1", "C1");
//獲取行數(shù)
object[,] objectData = new object[65535, 3];
while (!string.IsNullOrEmpty(strLine))
{
string[] tempArr;
tempArr = strLine.Split(',');
for (int k = 1; k <= tempArr.Length; k++)
{
objectData[rowNum-1, k-1] = tempArr[k - 1];
}
strLine = sr.ReadLine();
rowNum++;
}
r = r.get_Resize(65535, 3);
r.Value2 = objectData;
r.EntireColumn.AutoFit();
//保存excel文件
book.SaveCopyAs("D://source.xls");
//關(guān)閉文件
book.Close(false, missing, missing);
//退出excel
app.Quit();
MessageBox.Show("轉(zhuǎn)化成功!");
相關(guān)文章
C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫及表的方法
這篇文章主要介紹了C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫及表的方法,以實(shí)例形式分析了創(chuàng)建access數(shù)據(jù)庫及在access數(shù)據(jù)庫中建表的完整過程,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
WinForm使用DecExpress控件中的ChartControl插件繪制圖表
這篇文章介紹了WinForm使用DecExpress控件中的ChartControl插件繪制圖表的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
分析C# Dictionary的實(shí)現(xiàn)原理
對于C#中的Dictionary類相信大家都不陌生,這是一個(gè)Collection(集合)類型,可以通過Key/Value(鍵值對的形式來存放數(shù)據(jù);該類最大的優(yōu)點(diǎn)就是它查找元素的時(shí)間復(fù)雜度接近O(1)。那么什么樣的設(shè)計(jì)能使得Dictionary類實(shí)現(xiàn)O(1)的時(shí)間復(fù)雜度呢2021-06-06
C#中緊耦合Tight Coupling和松耦合Loose Coupling的實(shí)現(xiàn)
緊耦合和松耦合是描述模塊或組件之間耦合程度的兩個(gè)概念,本文主要介紹了C#中緊耦合Tight Coupling和松耦合Loose Coupling的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-03-03
C#日期格式字符串的相互轉(zhuǎn)換操作實(shí)例分析
這篇文章主要介紹了C#日期格式字符串的相互轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了C#日期格式字符串的相互轉(zhuǎn)換操作函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下2019-08-08

