Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с excel 
V
    Опции темы
Avada
Дата 22.12.2010, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Всем привет.

В процессе работы моей программы мне нужно обработать некоторые
данные, которые хранятся в xml файле и выводятся в stringgrid'ы, а затем
сохранить в файле excel'я. 

Вроде бы задача простая, я подключил в юзес ComObj
в своей процедуре прописал переменную xls1: variant, как описано в примере
все сделал, но при запуске мне говорит external exception [какойто код].

Как сделать, чтобы все работало нормально?
У меня делфи 7, иксель 2003

Заранее спасибо
PM MAIL   Вверх
cyberstream
Дата 22.12.2010, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 7.9.2006

Репутация: 1
Всего: 4



Как думаешь, если привести свой код, место и текст exception - это ощутимо поспособствует анализу ситуации?
--------------------
Не знаешь кого спросить? - Спроси google!
PM MAIL   Вверх
superVad
Дата 22.12.2010, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Avada, в 17 строке ошибка.
PM MAIL   Вверх
Данкинг
Дата 22.12.2010, 11:30 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Avada @  22.12.2010,  05:46 Найти цитируемый пост)
в своей процедуре прописал переменную xls1: variant, 

Этого явно недостаточно для вывода в .xls. smile


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
aleksh
Дата 22.12.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 1
Всего: 13



Цитата(Avada @  22.12.2010,  04:46 Найти цитируемый пост)
при запуске мне говорит

при запуске чего?
а вообще - ошибка во 2-й строчке 3-й функции
PM MAIL   Вверх
Avada
Дата 22.12.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



И то правда, а я как всегда все обобщил и подумал, что
пример в данном случае лишний.

Вобщем, я за это время успел еще порыться в компонентах
делфи и нарыл ExcelApplication. 

В ниже процедуре пробую хотя бы создать рабочую книгу 
икселя:
Код

procedure TForm1.label1Click(Sender: TObject);
begin
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add('test.xls',0);
ExcelApplication1.save('test.xls');
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
end;


После запуска программы при клике на метку процедура
выкидывает ошибку про экстернал экзепшн.
И чтобы не терять время зря: помогите мне правильно создать
файл экселя, в который я мог бы заносить нужную информацию.
PM MAIL   Вверх
Данкинг
Дата 22.12.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Вначале надо добавляешь книгу, а затем уже сохраняешь файл.
Код

ExcelApplication1.Workbooks.Add;
ExcelApplication1.saveas('test.xls');



Это сообщение отредактировал(а) Данкинг - 22.12.2010, 15:36


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Avada
Дата 22.12.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Цитата

ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add('test.xls',0);
ExcelApplication1.save('test.xls');


если меня монитор и клавиатура не подводит,
судя по всему я так и сделал. Зато при запущенном
экселе мне говорит что файл, указанный в скобках, не найден.
А предыдущая ошибка пропадает.
А мне нужно сохранять информацию в созданный с нуля файл
с уникальным именем.
Используя TExcelApplication

Это сообщение отредактировал(а) Avada - 22.12.2010, 17:53
PM MAIL   Вверх
Snowy
Дата 22.12.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Указывай полный путь к файлу.
PM MAIL   Вверх
Данкинг
Дата 22.12.2010, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Найди различие:
Цитата(Данкинг @  22.12.2010,  15:36 Найти цитируемый пост)
ExcelApplication1.saveas('test.xls');

Цитата(Avada @  22.12.2010,  17:52 Найти цитируемый пост)
ExcelApplication1.save('test.xls');

А вообще лучше используй Ole, а не ExcelApplication.
Код

var ex:variant;
begin
 ex:=createoleobject('excel.application'); 
 Ex.Workbooks.Add;
 Ex.saveas('test.xls');
 ex.quit;
 ex:=unassigned;
end;


Это сообщение отредактировал(а) Данкинг - 22.12.2010, 18:41


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
superVad
Дата 22.12.2010, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Может тут чего интересного нароешь: ссылка
PM MAIL   Вверх
Avada
Дата 23.12.2010, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Snowy
А разве короткий путь к файлу не подразумевает сохранения
в текущей директории?
И если на то пошло, я и полный путь к файлу указывал, продолжает
ругаться ошибками

superVad
Спасибо

Это сообщение отредактировал(а) Avada - 23.12.2010, 01:41
PM MAIL   Вверх
Avada
Дата 23.12.2010, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Вот только беда, работает только когда эксель запущен.
А я незнаю, как запустить эксель через делфи.
PM MAIL   Вверх
Данкинг
Дата 23.12.2010, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Avada @  23.12.2010,  01:39 Найти цитируемый пост)
А разве короткий путь к файлу не подразумевает сохранения
в текущей директории?

Откуда Excel знает, какая директория текущая? Он сохраняет в своей директории по умолчанию - "Мои документы" или что там указано.
Цитата(Avada @  23.12.2010,  01:56 Найти цитируемый пост)
Вот только беда, работает только когда эксель запущен.
А я незнаю, как запустить эксель через делфи. 

Не знаю, что там у кого запущено, но я же код написал. Он тоже ошибку выдаёт?

Добавлено через 2 минуты и 42 секунды
 
Код

ex:=createoleobject('excel.application');
 ex.visible:=false;
 Ex.DisplayAlerts:=False;
 ex.workbooks.add;
 ex.activeworkbook.sheets[1].activate;
 ex.activesheet.name:='Часть 1';
 Ex.ActiveWorkbook.SaveAs('test.xls');
 ex.application.quit;
 ex:=unassigned;


Это сообщение отредактировал(а) Данкинг - 23.12.2010, 02:34


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Avada
Дата 23.12.2010, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Цитата

Не знаю, что там у кого запущено, но я же код написал. Он тоже ошибку выдаёт?


если честно, да. Ту самую, external exception

Вот программа, думаю все правильно скопировал:

Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
ex: variant;
begin
ex:=createoleobject('excel.application');
 ex.visible:=false;
 Ex.DisplayAlerts:=False;
 ex.workbooks.add;
 ex.activeworkbook.sheets[1].activate;
 ex.activesheet.name:='Часть 1';
 Ex.ActiveWorkbook.SaveAs('test.xls');
 ex.application.quit;
 ex:=unassigned;
end;

end.



указание полного пути также ничего не меняет

Это сообщение отредактировал(а) Avada - 23.12.2010, 03:32
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1043 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.