![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,210
|
![]()
Вот код сохранения StringGrid в формате Excel:
# procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string); var L3: Word; const {$J+} CXlsLabel3: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); {$J-} begin L3 := Length(AValue); CXlsLabel3[1] := 8 + L3; CXlsLabel3[2] := ARow; CXlsLabel3[3] := ACol; CXlsLabel3[5] := L3; XlsStream.WriteBuffer(CXlsLabel3, SizeOf(CXlsLabel3)); XlsStream.WriteBuffer(Pointer(AValu e)^, L3); end; function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean; const {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-} CXlsEof: array[0..1] of Word = ($0A, 00); var FStream3: TFileStream; I3, J3: Integer; begin Result := False; FStream3 := TFileStream.Create(PChar(AFileName) , fmCreate or fmOpenWrite); try CXlsBof[4] := 0; FStream3.WriteBuffer(CXlsBof, SizeOf(CXlsBof)); for i3 := 0 to AGrid.ColCount - 1 do for j3 := 0 to AGrid.RowCount - 1 do XlsWriteCellLabel(FStream3, I3, J3, AGrid.cells[i3, j3]); FStream3.WriteBuffer(CXlsEof, SizeOf(CXlsEof)); Result := True; finally FStream3.Free; end; end; procedure TForm14.Excel1Click(Sender: TObject); begin if SaveAsExcelFile(SG3, 'c:\Таблица №3.xls') then MessageBox(0,'Таблица сохранена в папке "Локальный диск С"!','Счетовод 2008 v.1.0',MB_ICONINFORMATION); end; Сохраняет все хорошо. Но у всех сохраняемых файлов одинаковое имя в коде. Поэтому, когда их сохраняешь снова и снова, то они затирают друг друга((. Вот я и думал как сделать через SaveDialog1 так, чтобы можно было указывать новое имя и указывать место где их сохранять. Пробовал в процедуре кнопки писать так: # begin with SaveDialog1.Execute do Form14.SG3.Assign(SaveDialog1); end; но не работает((. Какие у вас есть предложения как можно это сделать? Было бы очень хорошо, если бы удалось это сделать.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,210
|
![]()
Спасибо большое!)) А как сделать чтобы при новом запуске моей программы, я мог импортировать данные из любой сохраненной таблицы, указав лишь ее имя?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,210
|
![]()
А как сделать так, чтобы когда я сохранил таблицу, то потом мог снова ее же открыть для изменения данных? А то сейчас когда я открываю и вношу данные то она все удаляет, а мне так не надо!)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сохранить в MS Word? | Apollo_13 | Общие вопросы Delphi | 4 | 10.11.2007 09:58 |
Сохранить базу *.mdb | Moel | БД в Delphi | 2 | 26.10.2007 12:00 |
Как сохранить MP3 тег? | Lika | Мультимедиа в Delphi | 1 | 24.09.2007 09:37 |
Сохранить как? | InseR | Общие вопросы Delphi | 31 | 27.06.2007 16:18 |