C#实现把txt文本数据快速读取到excel中

   这篇文章主要介绍了C#实现把txt文本数据快速读取到excel中,本文直接给出示例代码,需要的朋友可以参考下

  今天预实现一功能,将txt中的数据转到excel表中,做为matlab的数据源。搜集一些c#操作excel的程序。步骤如下:

  下载一个Microsoft.Office.Interop.Excel.dll 在项目中引用。

  编写代码如下:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

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");
//关闭文件
book.Close(false, missing, missing);
//退出excel
app.Quit();
MessageBox.Show("转化成功!");

  以上代码可以实现功能,由于txt中的数据有60501行,数据量太大。我估算了一下,用以上代码转到excel要用大约2-3分钟。我一共要转9个txt。一共要用20多分钟。这样作出系统显然是让人难以忍受的。接着找资料,发现用rang方法可以提高速率。只用大约3-4秒钟的时间,提高效率几十倍。代码如下:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

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");
 
//获取行数
 
 
 
 
 
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");
//关闭文件
book.Close(false, missing, missing);
//退出excel
app.Quit();
MessageBox.Show("转化成功!");

时间: 2024-09-09 20:53:09

C#实现把txt文本数据快速读取到excel中的相关文章

C#实现大数据量TXT文本数据快速高效去重

原文 C#实现大数据量TXT文本数据快速高效去重 对几千万的TXT文本数据进行去重处理,查找其中重复的数据,并移除.尝试了各种方法,下属方法是目前尝试到最快的方法.以下代码将重复和不重复数据进行分文件存放,提升效率的关键是用到了HashSet. TextReader reader = File.OpenText(m_dataFilePath); string[] files = new string[2]; files[0] = ROOT_DIR + "不重复数据.txt"; file

向Excel中导入TXT文本数据的三种方法

Excel支持导入外部文本文件中的文本内容.通过导入数据的方法我们可以很方便地使用外部数据,在许多时候可以免去重新手动键入文本的麻烦. 在Excel中导入文本有多种方法,我们来看一看-- 1.使用"打开"命令 这是最常用的方法,这种方法可以直接将文本文件打开为一个Excel工作簿. 选择菜单命令"文件|打开",在"打开"对话框中选择"文件类型"为"文本文件",如图1所示,然后找到要导入的文本文件并将其选中,

Arraylist读取了excel中数据,如何截取一段数据使用

问题描述 excel中(或数据库?)第一列为"深度(m)":第二列为"岩石性质":第三列为"Cout":第四列为"Cin",第五列为"dc":深度H是动态不断增加的1m,2m...........5000m,2,3,4,5列也对应出现新的数据.现在使用Arraylist读取了所有数据,第一种情况:在编程计算中,判断ArrayList[i][1]达到给定深度H后,从这一行开始转入另一算法(命名为Carbona

使用向导将数据从文本文件导入Excel中

可以使用 Microsoft Office Excel 将数据从文本文件导入工作表中.该文本导入向导可检查您正在导入的文本文件,并能确保以您期望的方式导入数据. 步骤 1(共 3 步) 原始数据类型 如果文本文件中的项以制表符.冒号.分号.空格或其他字符分隔,则选择"分隔符号".如果文本文件中的所有项的长度相同,则选择"固定宽度". 导入起始行 键入或选择行号以指定要导入数据的第一行. 文件原始格式 选择文本文件中使用的字符集. 大多数情况下,可以保持文本格式的默认

导出数据、图片到excel中

问题描述 解决方案 解决方案二:导出excel时候,除了图片,其他数据都能导出.解决方案三:建立一个二维数组,将相应的信息放进去,然后将数组中的数据输出到excel中//将二维数组值导入进excel中publicstaticboolConvertDataToExcel(double[,]data,stringxlsSaveFileName){//在做这些前,将Excl添加到引用中来!!Microsoft.Office.Interop.Excel.Applicationexcel=newMicro

数据无法写入到Excel中

问题描述 privatevoidButton1_Click(objectsender,System.EventArgse){StringWritersw=newStringWriter();sw.WriteLine("试题编号t题干t选项At选项Bt选项Ct选项Dt正确答案");foreach(DataRowdrindt.Rows){sw.WriteLine(dr["ID"].ToString()+"t"+dr["Title"

怎么将解析的txt文本数据写入到指定位置

问题描述 privatevoidbutton1_Click(objectsender,EventArgse){OpenFileDialogofd=newOpenFileDialog();ofd.Filter="(*.*)|*.*";ofd.RestoreDirectory=true;if(ofd.ShowDialog()==DialogResult.OK){textBox6.Text=ofd.FileName;FileStreamfs=newFileStream(ofd.FileNam

利用缓存机制快速读取XML文件中的数据

xml|缓存|数据 接到一个任务,让我做一个公司网站的后台管理系统.要求很简单,就一个新闻发布模块和一个招聘信息发布模块.但不能用DB,只能用文件存取的形式实现.        不用考虑肯定是用XML文件进行数据的存取了,以前做毕设的时候也曾经实现过类似的功能,所以关于XML的读取并没有问题.关键是如果考虑到性能的问题就值得推敲一下了,我是新人,以前也没做过什么设计,所以做出的东西在一些人眼中可能会有些稚嫩,那也没关系,走自己的路让别人去说吧:)        如果频繁解析文件,速度肯定受到影响

妙用Excel把有规律的txt文本数据分列

刚考完试,领导心血来潮,要求统计一下男女比例.平均分.及格人数等各项信息.学校一直使用专用软件登记考生资料,但该软件竟没有这些统计功能,暴汗.幸好发现这软件能把基本数据导出为文本文件,我想,拿到Word或Exce里或许有办法解决.下面是导出的文本,如图1. 导出的文本 要统计各项数据,首先要把连在一起的各列数据分开,首先想到的是用Word的文本转换为表格功能,但尝试后发现,在Word中要将文本转为表格,必须具有文字分隔符,但从图1可见,几列数据是连在一起的,没有Word能够识别的符号分隔,所以此