Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Сохранени Таблицы в .txt   Найти похожие ветки 

 
anubis ©   (2006-03-09 11:54) [0]

Уважаемые мастера подскажите пожалуста как Сохранить таблицу в формате .txt или перенести её в Memo только чтоб она была как таблица а не как сбор слов.
Заранее благодарен


 
vovnuke ©   (2006-03-09 12:00) [1]

а хранить её в *.txt, а также показывать данные в Memo это принципиально?


 
anubis ©   (2006-03-09 12:04) [2]

мне нужно чтоб эту таблицу можно было созранить в *.txt и можно было распечатать распечать. в принципе я перенёс её в Memo но она выглядит ужасно.


 
msguns ©   (2006-03-09 12:08) [3]

Лучше всего таблицу выгружать в один из распространенных печатных фрматов, "понимающих" таблицы. Например, эксель или хатмель.


 
Sergey13 ©   (2006-03-09 12:10) [4]

2[2] anubis ©   (09.03.06 12:04)
Для распечатки таблицы вовсе не обязательно сохранять ее в TXT или в Мемо.


 
anubis ©   (2006-03-09 12:11) [5]

а как её тогда печатать или как её выгрузить в Ексель


 
Sergey13 ©   (2006-03-09 12:14) [6]

2 [5] anubis ©   (09.03.06 12:11)
>а как её тогда печатать
С помощью генераторов отчетов. Например КвикРепорт, ФастРепорт и т.п.


 
msguns ©   (2006-03-09 12:16) [7]

>Sergey13 ©   (09.03.06 12:14) [6]
>С помощью генераторов отчетов. Например КвикРепорт, ФастРепорт и т.п.

Quick - отстой, Fast - платный. А, главное, оба требуют конструирования отчетов, что для универсальной технологии выгрузки любых таблиц неприемлимо.


 
anubis ©   (2006-03-09 12:18) [8]

а по другому никак?
я вообщето пока далеко не мастер я только учусь можно как нибуд по подробней я не знаю что такое  

>  Например КвикРепорт, ФастРепорт и т.п.


 
msguns ©   (2006-03-09 12:22) [9]

Забудьте про [6],- там Серега не подумав ляпнул ;)

Экспорт в эксель:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=502


 
Sergey13 ©   (2006-03-09 12:22) [10]

2[7] msguns ©   (09.03.06 12:16)
>Quick - отстой,
Да ладно - нормальный он.

>Fast - платный.
19 убитых енотов, если мне память не изменяет, не велика плата.

>что для универсальной технологии выгрузки любых таблиц неприемлимо.
Тебе бы все универсальное! А деньги на чем зарабатывать? 8-)

2[8] anubis ©   (09.03.06 12:18)
>  Например КвикРепорт, ФастРепорт и т.п.
Это генераторы отчетов.


 
anubis ©   (2006-03-09 12:23) [11]

Спасибо почитаю поучусь надеюсь всё получится!! :)


 
Sergey13 ©   (2006-03-09 12:26) [12]

2 [9] msguns ©   (09.03.06 12:22)
>Забудьте про [6],- там Серега не подумав ляпнул ;)
Папрашу без инсинуаций! 8-)
В чем я не прав?


 
Плохиш ©   (2006-03-09 12:28) [13]


> anubis ©   (09.03.06 12:04) [2]
> мне нужно чтоб эту таблицу можно было созранить в *.txt
> и можно было распечатать распечать. в принципе я перенёс
> её в Memo но она выглядит ужасно.

Надо установить моноширинный шрифт (Courier).


 
anubis ©   (2006-03-09 12:33) [14]


> Плохиш ©   (09.03.06 12:28) [13]
> Надо установить моноширинный шрифт (Courier).

это что такое?
оно у меня полючается не как таблица а как сБор слов
Имя          Фамилия        адрес
Вася         Петров          Там
Николай         Иванов          Тут


 
anubis ©   (2006-03-09 12:35) [15]

первые аыстраеваеш нормально а потом остальные уже прыгают потому что кол. символв везде разное


 
msguns ©   (2006-03-09 12:36) [16]

>Sergey13 ©   (09.03.06 12:26) [12]
>В чем я не прав?

Что ты, что ты, Серега, разве ты можешь быть не прав ? ;)
Ты сабж внимательно читал ? А если да, то там не написано, что надо распечатать таблицу. Кроме того, не сказано вообще ничего о какой-то конкретной таблице, а это подразумевает что человеку нужна технология выгруза в печатаемые файла произвольной таблицы.
Возможно, что задача стоит такая, что надо таблицу перенести на другой комп, чтобы там можно было ее "прочитать" и напечатать, возможно подправив. Тут оба твоих насоветованных репорта нервно курят в стороне (пардон, по поводу фаста беру слова назад, не спал с ним - не знаю)


 
msguns ©   (2006-03-09 12:40) [17]

>anubis ©   (09.03.06 12:35) [15]
>первые аыстраеваеш нормально а потом остальные уже прыгают потому что кол. символв везде разное

Делайте через Эксель. Это самый простой из правильных методов. Когда получится простой вывод, учитесь работать с шаблонами экселя - ширины колонок, фонт, цвет и т.д. можно заранее выставить в шаблоне, после чего просто выгрузить туда данные таблицы. Пользователя совсем нетрудно научить самому делать шаблоны. При этом Вы навсегда избавитесь от претензий по поводу "неудобного" или "плохочитаемого/распечатываемого" отчета


 
Sergey13 ©   (2006-03-09 12:42) [18]

2[16] msguns ©   (09.03.06 12:36)
>Ты сабж внимательно читал ?
А ты?

>а это подразумевает что человеку нужна технология выгруза в печатаемые файла произвольной таблицы.
Это подразумевает, что человек не знает, что такое генератор отчетов, и пытается таким замысловатым способом решить тривиальную проблему. 8-)

>Что ты, что ты, Серега, разве ты можешь быть не прав ? ;)
Вот это правильно! Не спорю. 8-)


 
msguns ©   (2006-03-09 12:45) [19]

>Sergey13 ©   (09.03.06 12:42) [18]
>Это подразумевает, что человек не знает, что такое генератор отчетов, и пытается таким замысловатым способом решить тривиальную проблему. 8-)

В телепаторе вклчился режим "осенило !" ?
 Снимаю шляпу, галстук, ботинки.. Что там еще полагается снять в таких случаях ?
 ;)


 
anubis ©   (2006-03-09 13:15) [20]


> msguns ©


извини конечно может это и не тебе надо задовать но не работает.
там ошибка.


 
msguns ©   (2006-03-09 13:19) [21]

>anubis ©   (09.03.06 13:15) [20]

Где "там" и что за "ошибка" ?
У меня все работает.


 
anubis ©   (2006-03-09 13:23) [22]


> msguns ©   (09.03.06 13:19) [21]
> Где "там" и что за "ошибка" ?
>


ExcelApp :=CreateOleObject("Excel.Application");

выдаёт ошибку
[Error] Unit1.pas(45): Undeclared identifier: "CreateOleObject"
что делать?


 
anubis ©   (2006-03-09 13:30) [23]

Может это из-за того что у меня Офис 2003?


 
msguns ©   (2006-03-09 14:02) [24]

В тексте по указанной ссылке жирным по белому:

Во всех случаях следует подключить модули ComObj и ActiveX


 
anubis ©   (2006-03-09 14:13) [25]


> Во всех случаях следует подключить модули ComObj и ActiveX

Подключил и ничего
Нет всё компилирует но ничего не показывает!


 
msguns ©   (2006-03-09 14:13) [26]

Код давайте


 
msguns ©   (2006-03-09 14:17) [27]

uses
   ComObj, Excel2000, OleServer, DB, Variants;

procedure XLExp_DataSetExport(Range: OleVariant; DataSet: TDataSet);
// Експорт данных из датасета в Excel-лист
// Область листа (Range) задается параметром Range
// Range задает область листа (непрерывная последовательность ячеек листа)
//  начиная с которой будет итти заполнение из НД. При этом самой левой колонкой
//  может любая колонка листа, а строкой - любая строка листа.
// Ячейки этой "линии" колонок должны содержать имена полей НД, данные которых
//  будут помещаться в эти колонки
var
 RangeLen,Column,Row,lich,i,x: integer;
 ValueArray: OleVariant;
 Str: string;
 FieldArray: array [0..20] of string;
 bm: TBookmark;

begin
 // Строка начала района
 Row:=XLExp_Sheet.Range[Range,EmptyParam].Row;
 // Колонка начала района (левая крайняя)
 Column:=XLExp_Sheet.Range[Range,EmptyParam].Column;
 // Колонка конца района (правая крайняя)
 RangeLen:=Column+(XLExp_Sheet.Range[Range,EmptyParam].Columns.Count-1);
 // Переписать в массив FieldArray содержимое ячеек 1-й строки указанной области
 // листа Excel (имена полей датасета).
 // Предполагается, что их не должно быть более 21
 x := 0;
 for i := Column to RangeLen do
  begin
   Str := XLExp_Sheet.Cells.Item[Row,i].Formula;  // Содержимое ячейки
   Delete(Str,1,1);         // Обрезаем первый (служебный) символ
   FieldArray[x] := Str;
   x := x+1;
  end;
 // Создать дин.массив размерностью RxC, где R - кол-во строк датасета,
 // а C - кол-во колонок, заданное Range
 ValueArray := VarArrayCreate([0,DataSet.RecordCount-1,0,XLExp_Sheet.Range[Range,EmptyParam].Columns.Count],varVariant);
 lich := 0;    // Индекс строки НД
 // Подготовка датасета к сканированию
 with DataSet do
   begin
    bm := GetBookmark;     // Запомнить текущую запись
    DisableControls;
    First;
    while not Eof do
      begin
       for i := 0 to XLExp_Sheet.Range[Range,EmptyParam].Columns.Count do
         // Для каждой колонки Region определяется имя поля НД и значение
         //  этого поля записывается в дин.массив по адресу=индексу колонки
         begin
          if (FieldArray[i]<>"") then  // Колонка имеет ссылку на имя поля ?
              ValueArray[lich,i] := FieldByName(FieldArray[i]).AsString
          else
              ValueArray[lich,i] := "";
          end;
          lich := lich+1;
          Next;
      end;
    EnableControls;
    GotoBookmark(bm);   // Вернуться в исходную (до сканирования) запись
    FreeBookmark(bm);
   end;
{  Выражение :
   xlSheet.Range[Col[Column]+IntToStr(Row),Col[RangeLen]+IntToStr(Row+DataSet.RecordCount-1)]
  представляет "экселовскую" адресацию типа "A10","H17", где буква - индекс колонки, а
  число-индекс строки на листе Excel.
   В нативном виде (в самом Excel`е) этот регион будет = "A10:H17"
}
 // Перегнать в лист Excel (Ragion) значения из массива ValueArray
 XLExp_Sheet.Range[XLExp_Col[Column]+IntToStr(Row),XLExp_Col[RangeLen]+IntToStr(Row+DataSet.RecordCount-1)].Value := ValueArray;
 // Присвоить всем ячейкам региона Region цвет символов как у левой верхней ячейки
 XLExp_Sheet.Range[XLExp_Col[Column]+IntToStr(Row),XLExp_Col[RangeLen]+IntToStr(Row+DataSet.RecordCount-1)].Font.Color := XLExp_Sheet.Range[Range,EmptyParam].Font.Color;
 // Присвоить всем ячейкам региона Region цвет как у левой верхней ячейки
 XLExp_Sheet.Range[XLExp_Col[Column]+IntToStr(Row),XLExp_Col[RangeLen]+IntToStr(Row+DataSet.RecordCount-1)].Interior.Color := XLExp_Sheet.Range[Range,EmptyParam].Interior.Color;
 // Присвоить всем ячейкам региона Region рамки как у левой верхней ячейки
 XLExp_Sheet.Range[XLExp_Col[Column]+IntToStr(Row),XLExp_Col[RangeLen]+IntToStr(Row+DataSet.RecordCount-1)].Borders.LineStyle := XLExp_Sheet.Range[Range,EmptyParam].Borders.LineStyle;
end;


 
msguns ©   (2006-03-09 14:35) [28]

Поправка:

Строки "пролога" о именах полей-колонках эксель-листа не принимать во внимание.


 
Виталий Панасенко   (2006-03-09 14:50) [29]


> msguns ©   (09.03.06 12:16) [7]
> >Sergey13 ©   (09.03.06 12:14) [6]
> >С помощью генераторов отчетов. Например КвикРепорт, ФастРепорт
> и т.п.
>
> Quick - отстой, Fast - платный. А, главное, оба требуют
> конструирования отчетов, что для универсальной технологии
> выгрузки любых таблиц неприемлимо.

Универсальное всегда уступает специализированному



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.047 c
15-1141191597
Ega23
2006-03-01 08:39
2006.03.26
Не високосный, но всё-таки: С Днём рождения! 29 февраля


11-1123192059
Thaddy
2005-08-05 01:47
2006.03.26
Propose small change to _Tobj to the Dacha man ;)


15-1141567477
Nick Denry
2006-03-05 17:04
2006.03.26
Подскажите где найти описание FastDIB


3-1138637310
Ega23
2006-01-30 19:08
2006.03.26
Переменные типа image в скрипте


2-1142006515
Vitalik__
2006-03-10 19:01
2006.03.26
работа с буфером.