![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
edit и Excel [D6, WinXP]
Nik_Larin © (2005-05-23 11:59:00)Уважаемые мастера, отзывчевые люди, у меня такой к вам для меня сложный вопрос, а для вас, я думаю, простой вопросик.
Постараюсь попонятнее!
Вообщем, есть два edit - а и документ Excel.
Пользователь вводит фамилию в edit1 и имя в edit2, и нажимает на кнопку, которая заносит эти данные в ячейку таблицы Excel, но это ещё не все, дело в том что этих пользоватлей несколько, а документ один. как сделать чтобы каждый пользователь добавлялся?
Заранее большое спасибо!
Drakosha (2005-05-25 09:58:00) [1]YurikGL © (23.05.05 19:13) [12]
пару примеров если не затруднит
YurikGL (2005-05-23 19:13:00) [2]
> Оч хотелось бы узнать чего ето TExcellApplication так плох
> ...
У него реализован не весь интерфейс. Поэтому приходится изголяться. Через CreateOleObject все пишется намного проще
Drakosha (2005-05-23 16:27:00) [3]2 Dels © (23.05.05 15:44) [8]
а вот это не забыл?
"Так же на форме находится компонент TExcelApplication со свойством Name, содержащим XLApp и свойством ConnectKind, содержащим ckNewInstance."
2 debuger ©
Оч хотелось бы узнать чего ето TExcellApplication так плох ... пол проекта с его использованием написано...и не хотелось бы переписывать :) ... если в вспомнишь где о таком читал дай знать плиз.
debuger (2005-05-23 16:10:00) [4]Брр. Плохо перечитал код. Я от кого-то слышал, что использовать TExcelApplication не очень рекомендуется. Более цивильный вариант(не факт)..., в общем смотрите код(он старый, так что не обращайте внимания на его стиль).
uses COMObj;
function ReferenceToCell(const ARow, ACol: Integer): string;
begin
Result := Chr(Ord('A') + ACol - 1) + IntToStr(ARow);
end; {Reference to Cell}
function xlCellFormat(const value: double): double;
begin
Result := Trunc(value) + Trunc(Frac(value) * 100) / 100;
end; {xlCellFormat}
function ExportChartToExcel(const deviceName: string; const series: TLineSeries; const devCfg: TDeviceConfiguration; const fileName: string): boolean;
const
xlWBatWorksheet = -4167;
var
xlApp, xlSheet, xlData : OLEVariant;
i: Integer;
rowCount, colCount: integer;
begin
Result := False;
rowCount := series.Count + 2;
colCount := 1;
xlData := VarArrayCreate([0, rowCount, 0, colCount], varVariant);
// дата
xlData[0, 0] := 'Дата';
xlData[0, 1] := DateToStr(Now);
// время
xlData[1, 0] := 'Время';
// значения
xlData[1, 1] := 'Показания';
// заполняем
for i := 0 to series.Count - 1 do begin
// время
xlData[i + 2, 0] := TimeToStr(series.XValues[i]);
// значения
xlData[i + 2, 1] := xlCellFormat(series.YValues[i]);
end; {for}
xlApp := CreateOleObject('Excel.Application');
try
// прячем Excel
xlApp.Visible := False;
xlApp.Workbooks.Add(xlWBatWorkSheet);
xlSheet := xlApp.Workbooks[1].WorkSheets[1];
xlSheet.Name := deviceName;
// заполняем шит
xlSheet.Range[ReferenceToCell(1, 1), ReferenceToCell(rowCount + 1, colCount + 1)].Value := xlData;
// форматируем шит
xlSheet.Range[ReferenceToCell(1, 1), ReferenceToCell(1, 2)].Font.Bold := True;
xlSheet.Range[ReferenceToCell(2, 1), ReferenceToCell(rowCount, colCount + 1)].Borders.LineStyle := 1;
xlSheet.Columns[1].ColumnWidth := 10;
xlSheet.Columns[2].ColumnWidth := 13;
//xlSheet.Columns[3].ColumnWidth := 10;
//xlSheet.Columns[4].ColumnWidth := 10;
// сохраняем Excel Worksheet
try
xlApp.Workbooks[1].SaveAs(fileName);
Result := True;
except
// Error ?
end;
finally
// завершаем Excel
if not VarIsEmpty(XLApp) then
begin
xlApp.DisplayAlerts := False;
xlApp.Quit;
xlApp := Unassigned;
xlSheet := Unassigned;
xlData := Unassigned;
end;
end;
end; {ExportChartToExcel}
debuger (2005-05-23 16:01:00) [5]Это либо ваш ексел проглючивает или либа COMObj.
Dels (2005-05-23 15:44:00) [6]>Drakosha © (23.05.05 14:05) [6]
Обратился по данной ссылке (меня этот вопрос тоже очень интересует), попробовал компилировать - ошибку выдал на строчке
XLApp.Connect;
может какой-то компонент забыл?
-=XP=- (2005-05-23 14:38:00) [7]Вроде человеку надо чтобы при повторном вводе данные вводились не в ту же ячейку, а в следующую?
Интересно, что ему понадобится, когда два пользователя одновременно попытаются получить доступ к документу?
Drakosha (2005-05-23 14:05:00) [8]2 Nik_Larin
вот этого тебе должно хватить
http://delphiworld.narod.ru/base/excel_data_exchange.html
а про двух юзверей всётаки попросилбы поподробнее..
Гарри Поттер (2005-05-23 13:48:00) [9]Вроде человеку надо чтобы при повторном вводе данные вводились не в ту же ячейку, а в следующую?
-=XP=- (2005-05-23 13:34:00) [10]Еще дурнее вопрос: А это как сделать, что за база?
Прежде чем что-то делать, разберитесь, что это, и как это обычно принято делать.
База данных - это есть некоторый абстрактный термин, определяющий место и способ хранения данных. Кроме того, по умолчанию подразумеваются механизмы сохранения этих данных (запись) и извлечения этих данных (чтение) из этой базы данных.
Основные понятия: База Данных (БД), Таблица, Запись, Поле. В разных источниках эти понятия могут называться по-разному, но сути своей от этого они не меняют.
Поле - единица информации - в данном случае это "Фамилия" или "Имя". Могут быть и другие поля, такие как "Дата рождения" и пр. Для простоты понимания, поля - ячейки таблицы, находящиеся в одном столбце.
Запись - совокупность полей, описывающих одну сущность. В данном случае - человека. Для простоты понимания, запись - строка таблицы.
Таблица - совокупность записей.
База Данных - совокупность таблиц.
Для работы с БД презназначены СУБД - Системы Управления Базами Данных.
Примеры: MS Jet (Access), Intebase Server, MS SQL Server, DBF, Paradox и пр.
Это в нескольких словах.
А вообще - чтобы не изобретать велосипед - читайте теорию построения БД. Причем займитесь этим прямо сейчас, иначе потратите много сил и времени на решение вопросов, которые уже даыно решены. В частности - организация многопользовательского доступа к БД.
Nik_Larin (2005-05-23 13:18:00) [11]Drakosha © (23.05.05 13:06) [1]
>а то дабавить в ексель не проблема.
Хорошо начнем с того как просто добавить данные одного студента в екскль! Drakosha, как это сделать?
-=XP=-
>Используйте базы данных, и не изобретайте велосипед.
Еще дурнее вопрос: А это как сделать, что за база?
-=XP=- (2005-05-23 13:09:00) [12]Многопользовательский доступ к одному документу Excel?
Недурно!
Используйте базы данных, и не изобретайте велосипед.
Drakosha (2005-05-23 13:06:00) [13]... а поподробнее про пользователей можно?
а то дабавить в ексель не проблема.