Как разобрать текстовый файл и записать результат в файл xls? - PullRequest
1 голос
/ 23 апреля 2010

Привет всем, я разработчик SQL младшего уровня. У меня есть ситуация, когда у меня есть текстовый файл с 1100 строками результатов поиска, каждая строка содержит путь к файлу и хранимую процедуру, связанную с этим файлом. Каждая строка имеет структуру, подобную приведенной ниже:

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

Где abc\def\ghi\***.cs - путь к файлу ***.cs. Имена хранимых процедур начинаются с proc_. Я должен извлечь ***.cs и соответствующее имя хранимой процедуры, начиная с proc_, и записать их в файл .xls. Может ли какой-нибудь орган помочь мне в написании программы синтаксического анализа? Также я могу получить подробную схему о том, где я должен написать код для C # и где я должен его скомпилировать? Это может быть очень полезно, так как я не знаю C #.

Спасибо, BK.

Ответы [ 4 ]

2 голосов
/ 23 апреля 2010

Это может звучать глупо, но лучшим вариантом может быть импорт необработанного CSV в Excel, а затем написать макрос для извлечения.Может быть, более легкая кривая обучения, чем C #, Visual Studio и т. Д.

1 голос
/ 23 апреля 2010

Если вам абсолютно необходим файл xls (а не просто csv), библиотека FileHelpers упрощает написание файла xls.

FileHelpers берет строго типизированный класс и записывает егокак csv или xls, или может напрямую подключаться к серверу SQL и сохранять там записи.

По сути, у вас будет что-то вроде:

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

Вы можете использовать код Роберта Харви илирегулярное выражение для извлечения путей и имен процедур, создания нового 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 , чтобы сохранитьфайл.

1 голос
/ 23 апреля 2010

Что касается синтаксического анализа, вы можете использовать регулярные выражения, такие как это:

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

(кстати, я этого не проверял, поэтому он может не работать)

Что касается экспорта в файл XLS, это немного сложнее. Если вы собираетесь запускать его на компьютере с Windows, на котором установлен Excel, то я считаю, что вы можете использовать COM, чтобы Excel сделал это за вас, но в противном случае вам придется либо: 1. Реализовать формат файла XLS. (сложно), 2. купить реализацию формата файла XLS (дорого) или 3. сделать что-то еще, например, автоматизировать OpenOffice или что-то еще.

0 голосов
/ 23 апреля 2010
// 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).

...