|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
сброс файла txt в Excel
тектовый файл содержит не просто набор слов, там таблица многострочная с столбцами естетственно и подстолбцами. в коде написала что создаю excel application как обычно, сначала открываю файл для чтения (заранее указав путь) затем открываю снова и построчно с помощью цикла считываю строки в переменную buf. у меня 2 вопроса: при отладке выходят какие-то закорючки, видимо кодировка глючит и как в цикле можно указать чтобы каждая строка сбрасывалась в каждую строку excel?
|
#2
|
||||
|
||||
Код и файл в студию
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#3
|
|||
|
|||
вот файл, в коде думаю нет необходимости ничего ценного там нет (
|
#4
|
||||
|
||||
Цитата:
Цитата:
Цитата:
Код:
var InFile: TextFile; k: Integer; Str: String; begin k := 1; AssignFile(InFile, 'C:\InFile.txt'); Excel.Workbooks.Add('C:\OutFile.xls', 0); Reset(InFile); while not EOF(InFile) do begin Readln(InFile, Str); Excel.Cells.Item[k, 1] := Str; Inc(k); end; CloseFile(InFile); Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#5
|
|||
|
|||
нет там не так все просто как кажется или мне тока так кажется...вот что у меня есть по этой теме
Код:
procedure TForm1.Button1Click(Sender: TObject); const D = [#9]; var F : TextFile; Str1, StrFld,Fn : String; i,k, Pos1, Pos2, Col, Row : Integer; EndRow : Boolean; exApp : Variant; exBook : Variant; exSheet : Variant; begin try if OpenDialog1.Execute=false then exit; Fn:=OpenDialog1.FileName; exApp := CreateOleObject('Excel.Application'); exApp.Visible := True; exBook := exApp.WorkBooks.Add; exSheet := exBook.WorkSheets[1]; AssignFile(F, Fn); Reset(F); Pos1 := 0; Pos2 := 0; Col := 1; Row := 1; k:=0; EndRow := False; while not Eof(F) do begin Readln(F,Str1); for i := 1 to Length(Str1) do begin k:=k+1; if i = 1 then Pos1 := i else if Str1[i - 1] in D then Pos1 := i; if i = Length(Str1) then begin Pos2 := i; EndRow := True; end else if Str1[i + 1] in D then Pos2 := i; if Pos2 > 0 then begin StrFld := Copy(Str1, Pos1, Pos2 - Pos1 + 1); OemToChar(PChar(StrFld),pchar(StrFld)); { if k>12 then // позиция конца шапки(№ строки) begin exSheet.Cells[Row,1].Value :=copy(StrFld,1,23); exSheet.Cells[Row,2].Value :=copy(StrFld,24,3); exSheet.Cells[Row,3].Value :=copy(StrFld,27,8); exSheet.Cells[Row,4].Value :=copy(StrFld,35,8); end; } Pos2 := 0; Inc(Col); if EndRow then begin Inc(Row); Col := 1; EndRow := False; end; end; end; end; finally try CloseFile(F) finally end; exSheet := Unassigned; exBook := Unassigned; exApp := Unassigned; end; end; в этом коде все данные в excel скидываются в одну ячейку книги, листа. а мне нужно чтобы получилось более менее похожее на таблицу, чтобы потом в экселе можно было проводить расчеты с помощью этих данных. для этого я начала кое-что делать это прописано в комментарии - но это тоже не особо верно, потому что шапка отчета тоже разделяется (и получаются обрывки слов, пустые места). помогите пожалуйста, дело еще в том, что после конца таблицы, шапка вновь будет повторятся с таблицей несколько раз, просто я выложенный файл сократила, так он весит 3 метров. |
#6
|
||||
|
||||
Цитата:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#7
|
|||
|
|||
нет это задание такое...видимо никаких предложений нет?
|
#8
|
||||
|
||||
Если не сложно, то сделай пример файла excel как должно быть. Хотя бы одну запись, а то я не очень пойму шапку таблицы.
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#9
|
||||
|
||||
Не запихать ваш отчет в эксель и в ворд через лексиконовский фильтр тоже не будет работать. Обработать ручками разово это еще можно, но вот написать конвертер для чтения данных в эксель из такого файла дело уже непростое и явно тянет на тему в Работе.
Если хочется сделать самой, то могу предложить такой алгоритм. Убрать все лишние строки которые не содержат данных, затем заменить все пробелы в определенных позициях на символ табуляции. Результат сохранить в новый файл. Вот такой файл вы уже сможете открывать в экселе и данные будут раскиданы по столбцам. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 01.06.2011 в 12:30. |