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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт и Экспорт из Excell в StringGrid, c помощью OpenDialog и SaveDialog 
V
    Опции темы
MerCus
Дата 2.12.2008, 07:06 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



подскажите как через Диалоги открывать и сохранять StringGrid в xls?
спасибо))
PM MAIL   Вверх
Данкинг
Дата 2.12.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Поискать на форуме топики о работе с XLS. Или в DRKB. smile 


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


Опытный
**


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

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



Попробуй так:

Код

 uses
   ComObj;

 function RefToCell(ARow, ACol: Integer): string;
 begin
   Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
 end;

 function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean;
 const
   xlWBATWorksheet = -4167;
 var
   Row, Col: Integer;
   GridPrevFile: string;
   XLApp, Sheet, Data: OLEVariant;
   i, j: Integer;
 begin
   // Prepare Data 
  Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant);
   for i := 0 to AGrid.ColCount - 1 do
     for j := 0 to AGrid.RowCount - 1 do
       Data[j + 1, i + 1] := AGrid.Cells[i, j];
   // Create Excel-OLE Object 
  Result := False;
   XLApp := CreateOleObject('Excel.Application');
   try
     // Hide Excel 
    XLApp.Visible := False;
     // Add new Workbook 
    XLApp.Workbooks.Add(xlWBatWorkSheet);
     Sheet := XLApp.Workbooks[1].WorkSheets[1];
     Sheet.Name := ASheetName;
     // Fill up the sheet 
    Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
       AGrid.ColCount)].Value := Data;
     // Save Excel Worksheet 
    try
       XLApp.Workbooks[1].SaveAs(AFileName);
       Result := True;
     except
       // Error ? 
    end;
   finally
     // Quit Excel 
    if not VarIsEmpty(XLApp) then
     begin
       XLApp.DisplayAlerts := False;
       XLApp.Quit;
       XLAPP := Unassigned;
       Sheet := Unassigned;
     end;
   end;
 end;

 // Example: 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', 'c:\MyExcelFile.xls') then
     ShowMessage('StringGrid saved!');
 end;


Не заметил про опен диалог smile вместо 

Код

   if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', 'c:\MyExcelFile.xls') then
     ShowMessage('StringGrid saved!');


поменяй на 

Код

   OpenDialog1.Execute;
   if SaveAsExcelFile(stringGrid1, 'My Stringgrid Data', OpenDialog1.Files.Text) then
     ShowMessage('StringGrid saved!');


Это сообщение отредактировал(а) ziga - 2.12.2008, 16:00
PM MAIL   Вверх
MerCus
Дата 3.12.2008, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ziga пишет, что файл не удалось найти, хотя файл то точно есть
PM MAIL   Вверх
ziga
Дата 3.12.2008, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хм.. а какой путь у файла? я попробовал сохранить в файл на диске C:\ всё нормально
PM MAIL   Вверх
hkdkest
Дата 4.12.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот еще статейка, может поможет: Сохранение данных из TListView в XLS
PM MAIL WWW   Вверх
MerCus
Дата 4.12.2008, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да я пытался открыть файл, не по твоему коду а по своему который открывает, только вместо пути файла написал OpenDialog1.Files.Text. и пишет, что файла нет такого
PM MAIL   Вверх
MerCus
Дата 9.12.2008, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



короче сделал как обычно: забил на прогу, попил пивка несколько дней, потом вернулся от делать нефег, и всё заработало!)) а именно вместо OpenDialog1.Files.Text надо было написать 
OpenDialog1.Filename, и всё работает)) 
PM MAIL   Вверх
Albinos_x
Дата 9.12.2008, 08:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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





--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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