如何解析文本文件并将结果写入xls文件?

时间:2010-04-22 21:14:59

标签: c# parsing xls text-files

大家好,我是初级SQL开发人员。我有一种情况,我有一个包含1100行搜索结果的文本文件,每行包含一个文件路径和一个与该文件关联的存储过程。每一行都有如下结构:

abc\def\ghi\***.cs(40): jkl=******.*****.******, "proc_pqrst", parms);

abc\def\ghi\***.cs是文件***.cs的文件路径。存储过程名称以proc_开头。我必须从***.cs开始提取proc_和相应的存储过程名称,并将它们写入.xls文件。有人可以帮我编写解析程序吗?我还可以详细介绍我应该在哪里编写c#的代码以及我应该在哪里编译它?这可能是一个很大的帮助,因为我对C#一无所知。

谢谢你, BK。

4 个答案:

答案 0 :(得分:2)

这可能听起来很愚蠢,但更好的选择可能是将原始CSV导入Excel,然后编写宏来进行提取。可能比C#,Visual Studio等更温和的学习曲线

答案 1 :(得分:1)

至于解析,你可以使用正则表达式,例如:

^(.*?\.cs).*"(proc_[A-Za-z0-9]*?)".*$

(顺便说一句,我没有测试过,所以它可能不起作用)

在导出到XLS文件方面,这有点困难。如果您要在安装了Excel的Windows机器上运行它,那么我相信您可以使用COM让Excel为您执行此操作,但除此之外,您还必须:1。实现XLS文件格式(硬),2。购买XLS文件格式的实现(昂贵),或3.做其他事情,比如自动化OpenOffice或其他东西。

答案 2 :(得分:1)

如果您绝对需要xls文件(而不仅仅是csv),FileHelpers库可以轻松编写xls文件。

FileHelpers采用强类型类并将其写为csv或xls,或者可以直接连接到SQL服务器并在那里保存记录。

基本上,你有类似的东西:

public class Record {
    public string filename;
    public string storedProc;
}

您可以使用Robert Harvey的代码或正则表达式来提取路径和过程名称,创建新的Record,然后将它们放入新对象中。

Record r = new Record();
r.filename = myString.Substring(0, myString.IndexOf(".cs"),3);       
r.storedProc= myString.Substring(myString.IndexOf("proc_")).Substring(0, temp.IndexOf('\"'));       

然后,您可以使用ExcelStorage类保存文件。

答案 3 :(得分:0)

// returns abc\def\ghi\something.cs
string path = myString.Substring(0, myString.IndexOf(".cs"),3);

string temp = myString.Substring(myString.IndexOf("proc_"));

// returns proc_pqrst
string proc = temp.Substring(0, temp.IndexOf('\"')));

要创建Excel中可读的文件,只需写出逗号分隔的文件(CSV)。