Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2007, 10:10   #1
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
Плохо OpenOffice

Подскажите как выгрузить данные в формате таблиц (аналогу ехcеl)опенофис (под виндой) из стрингрида???
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 02.10.2007, 15:30   #2
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Не укого не возникало вопроса?
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 02.10.2007, 16:26   #3
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

у меня нет OpenOffice, например

думаю, можно создать XML в совместимом формате..
а это уже идет работа с текстовыми файлами.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 02.10.2007, 17:06   #4
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Вот тут по подробней, токо на компе не стоит ехель
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 02.10.2007, 17:24   #5
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Код:
function ConvertStringGridToExcelTable: string;
var
  tmpStr: string;
  i, j: integer;
begin
for i := 0 to StringGrid1.ColCount - 1 do
begin
  for j := 0 to StringGrid1.RowCount - 1 do
  begin
    if tmpStr = ''
    then tmpStr := StringGrid1.Cells[i,j]
    else tmpStr := tmpStr + #9 + StringGrid1.Cells[i,j]
  end;
  if Result = ''
  then Result := tmpStr
  else Result := Result + #13#10 + tmpStr;
  tmpStr := ''
end;
Result := Result + #13#10;
Это и получится формат таблиц: соседние ячейки разделяются символами табуляции (#9), а строки символами переноса строки.
Не надо ничего усложнять. Все достаточно тривиально.

Последний раз редактировалось Shuraken; 02.10.2007 в 17:27.
Shuraken вне форума Ответить с цитированием
Старый 02.10.2007, 17:25   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от MAcK Посмотреть сообщение
Вот тут по подробней, токо на компе не стоит ехель
Если мне не изменяет память, то эксель поддерживает анси таблицы, т.е. обычный текст, разделенный табуляцией
pu4koff вне форума Ответить с цитированием
Старый 02.10.2007, 20:28   #7
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

вот и не понятно, какой формат и какого excel вы хотите получить ..
формат CSV еще есть, разделители - 'точка с запятой'
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 02.10.2007, 21:32   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
Лампочка

OpenOffice открывает все майкрософтовские документы
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 04.10.2007, 14:46   #9
MAcK
Форумчанин
 
Регистрация: 09.11.2006
Сообщений: 274
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
OpenOffice открывает все майкрософтовские документы
Мне надо создать ехеl документ не используя сервер ехеl-я, так как он не установлен
Единственный приличный формат, разработанный Microsoft'ом, - format c:
MAcK вне форума Ответить с цитированием
Старый 04.10.2007, 15:14   #10
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от MAcK Посмотреть сообщение
Мне надо создать ехеl документ не используя сервер ехеl-я, так как он не установлен
ole-объект
Код:
var
  XLApp,Sheet,Colum:Variant;
  index,i:Integer;
begin
 XLApp:= CreateOleObject('Excel.Application');
 XLApp.Visible:=true;
 XLApp.DisplayAlerts:=false;
 XLApp.Workbooks.Add(-4167);
 XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт';
 Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns;
 Colum.Columns[1].ColumnWidth:=5;
 Colum.Columns[2].ColumnWidth:=10;
 Colum.Columns[3].ColumnWidth:=10;
 Colum.Columns[4].ColumnWidth:=10;
 Colum.Columns[5].ColumnWidth:=10;
 Colum.Columns[6].ColumnWidth:=10;
 Colum.Columns[7].ColumnWidth:=10;
 Colum.Columns[8].ColumnWidth:=10;
 Colum.Columns[8].ColumnWidth:=10;

 Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows;
 Colum.Rows[3].Font.Bold:=true;
 Colum.Rows[1].Font.Bold:=true;
 Colum.Rows[1].Font.Color:=clBlue;
 Colum.Rows[1].Font.Size:=14;

 Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт'];
 Sheet.Cells[1,2]:='Учет перевозки грузов автомобильным транспортом';
 Sheet.Cells[3,1]:='№ проезда';
 Sheet.Cells[3,2]:='Марка авто';
 Sheet.Cells[3,3]:='Гос.номер';
 Sheet.Cells[3,4]:='Кто регистрировал';
 Sheet.Cells[3,5]:='Откуда';
 Sheet.Cells[3,6]:= 'Куда';
 Sheet.Cells[3,7]:= 'Дата';
 Sheet.Cells[3,8]:= 'Время';

 index:=4;
 DataModule1.proezd_main .First;
ну а дальше заливаешь данные

Извиняюсь, наверное, OLE не получится , если не установлен Excel.
По поводу OpenOffice - есть компоненты для работы с ним.... Скачайте в инете....
Вот тебе пример для опенОффиса, в котором реализованы основные процедуры для ОпенОффиса....Если возникнут вопросы - пиши:
Код:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, StrUtils, SampleCode;

type
  TfrmOOSample = class(TForm)
    btnConnect: TButton;
    btnCreate: TButton;
    btnOpen: TButton;
    btnSave: TButton;
    OpenDialog: TOpenDialog;
    btnDisconnect: TButton;
    btnInsText: TButton;
    SaveDialog: TSaveDialog;
    procedure btnConnectClick(Sender: TObject);
    procedure btnCreateClick(Sender: TObject);
    procedure btnOpenClick(Sender: TObject);
    procedure btnDisconnectClick(Sender: TObject);
    procedure btnInsTextClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmOOSample: TfrmOOSample;
  OpenOffice: TOpenOffice;

implementation

{$R *.dfm}

procedure TfrmOOSample.btnConnectClick(Sender: TObject);
begin
 OpenOffice := TOpenOffice.Create;
 if OpenOffice.Connect then
   begin
    btnCreate.Enabled := True;
    btnOpen.Enabled := True;
    btnConnect.Enabled := False;
    btnDisconnect.Enabled := True;
   end;
end;

//Создаем документ
procedure TfrmOOSample.btnCreateClick(Sender: TObject);
begin
 if not OpenOffice.CreateDocument then
   ShowMessage('Error')
 else
   begin
    btnSave.Enabled := True;
    btnInsText.Enabled := true;
   end;
end;


//открываем документ
procedure TfrmOOSample.btnOpenClick(Sender: TObject);
begin
  if OpenDialog.Execute then
   if not
    OpenOffice.OpenDocument('file:///'+AnsiReplaceText(OpenDialog.FileName,'\','/'))
    then
     ShowMessage('Error')
    else
     begin
      btnSave.Enabled := True;
      btnInsText.Enabled := true;
     end;

end;

//отсоединяемся
procedure TfrmOOSample.btnDisconnectClick(Sender: TObject);
begin
  btnCreate.Enabled := False;
  btnOpen.Enabled := False;
  btnSave.Enabled := False;
  btnInsText.Enabled := False;
  btnConnect.Enabled := True;
  btnDisconnect.Enabled := False;
  OpenOffice.Disconnect;
  OpenOffice.Free;
end;

//вставляем текст
procedure TfrmOOSample.btnInsTextClick(Sender: TObject);
begin
 OpenOffice.InsertText('Любой текст');
end;

//сохраняем док
procedure TfrmOOSample.btnSaveClick(Sender: TObject);
begin
 with SaveDialog do
    if Execute then
     OpenOffice.SaveDocument('file:///'+AnsiReplaceText(FileName,'\','/'));
end;

end.
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 04.10.2007 в 15:45.
Pitbull вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как открыть в делфи OpenOffice???? Gumaris Общие вопросы Delphi 2 06.12.2007 21:59