Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Из тектового файла в Excel


Автор: sgentstuff 29.6.2006, 09:58
тектовый файл с таким содержанием
как считать из файла и записать в ячейки excel как надо

=======================
CODE   CUSTOMER NAME     MAX                                                                                         
=======================
95015         name1                3
70526         name2                4

TOTAL                                    7 
                                                                                  
    

Автор: comtat 29.6.2006, 10:13
Ну читать можно так 
Код

type
  TTreb=record
     code: integer;
     name: string;
     max: integer;
  end;
..
procedure loadData(
                   fileName: string;
                   var detailAmount: integer;
                   var details: array of TTreb);

..

var
  details: array[1..MAX_TREB_AMOUNT] of TTreb;

//чтение
procedure loadData(fileName: string;
                   var detailAmount: integer;
                   var details: array of TTreb);
var
   i: integer;
   in_file: textFile;
begin
   assignFile(in_file, fileName);
   reset(in_file);
   read(in_file, detailAmount);
   for i:=0 to detailAmount-1 do
   begin
      read(in_file, details[i].code);
      read(in_file, details[i].name);
      read(in_file, details[i].max);
   end;
   closeFile(in_file);
end;


Чета типа того ...
А насчет записи в Excel смотри http://forum.vingrad.ru/index.php?showtopic=84634&view=all  smile 

Автор: sgentstuff 29.6.2006, 11:14
нужно же найти каждое слово и записать в ячейку, а ведь между словами всякие пробелы и т.д.
как должен выглядить алгоритм который например находит СODE - записывает в ячейку, дальше 

CUSTOMER N
Код

begin    
      read(in_file, details[i].code);    
      read(in_file, details[i].name);    
      read(in_file, details[i].max);    
end;
AME - записывает в ячейку и т.д 

а вот тут например что будет  details[i].code, details[i].name, details[i].max, помоему не то что надо, мне бы по подробнее, просто не знаю как это примерно сделать 

Автор: comtat 29.6.2006, 11:26
Ну если текстовый файл сделать таким

CODE   CUSTOMER_NAME     MAX                                                                                         
95015         name1                3
70526         name2                4

TOTAL                                    7  

Слова разделять не пробелом а Tab то все считается хорошо 

Автор: Alexeis 29.6.2006, 16:00
comtat, строчка read(in_file, details[i].name); - "сожрет" и значения max.

Добавлено @ 16:05 
sgentstuff, ваша задача также из области регулярных выражений (рядом есть тема о поиске в бинарном файле).
Можно, конечно, извернутся и сделать ручками, но это будет не гибко - любое изменение формата файла приведет к большим мучениям по коректировке кода, тогда как регулярные варажения позволят вам все изменения проводить с легкостью.
p.s. Ищите по форуму.

Добавлено @ 16:09 
Вот ссылка - человек решал почти такую же задачу
http://forum.vingrad.ru/index.php?showtopic=78194&view=all&hl=%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%AB%D0%B5 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)