大家好,我是初级SQL开发人员。我有一种情况,我有一个包含1100行搜索结果的文本文件,每行包含一个文件路径和一个与该文件关联的存储过程。每一行都有如下结构:
abc\def\ghi\***.cs(40): jkl=******.*****.******, "proc_pqrst", parms);
abc\def\ghi\***.cs
是文件***.cs
的文件路径。存储过程名称以proc_
开头。我必须从***.cs
开始提取proc_
和相应的存储过程名称,并将它们写入.xls文件。有人可以帮我编写解析程序吗?我还可以详细介绍我应该在哪里编写c#的代码以及我应该在哪里编译它?这可能是一个很大的帮助,因为我对C#一无所知。
谢谢你, BK。
答案 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)。