![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
импорт из Excel [D7, XP]
programmer90 © (2008-06-26 11:42:00)Здравствуйте уважаемые участники и мастера.
Вопрос следующий:
Дан edit на форме, и файл в формате xlsm. В ячейке a1 в файле находится данные.
1) Как импотировать/экспортировать в/из Делфи ячейку/едит таблицы.
2) Как импортировать целую строчку/столбец из Екселя.
Заранее благодарю-с.
programmmer90 (2008-07-01 00:27:00) [1]Удалено модератором
Примечание: Создание пустых сообщений
Ляпа (2008-06-29 17:40:00) [2]
> programmmer90 (29.06.08 15:52) [7]
> Желательно покороче, и на Делфи
Хм... лопату дали, направление указали, теперь канаву за тебя выкопать?
Сразу предупреждаю - код пригоден только в качестве примера!
unit TestExcel1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, System.ComponentModel, Borland.Vcl.StdCtrls,
System.Runtime.InteropServices,
System.Reflection;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.nfm}
var
excel, workbooks, workbook,worksheet,range, oWorksheets:TObject;
excelId:guid;
args:array[0..0] of TObject;
const
appProgID='Excel.Application';
procedure TForm1.Button1Click(Sender: TObject);
begin
excelId:=ProgIdToClassId(appProgID);
excel:=CreateComObject(excelId);
workbooks := excel.GetType().InvokeMember(
'Workbooks', BindingFlags.GetProperty, nil, excel, nil);
args[0]:='C:\2.xls';
workbook := workbooks.GetType().InvokeMember(
'Open', BindingFlags.InvokeMethod, nil, workbooks, args);
oWorksheets := workbook.GetType().InvokeMember(
'Worksheets', BindingFlags.GetProperty, nil, workbook, nil);
// Задаем имя страницы
args[0] := 'Лист1';
// Получаем ссылку на страницу с именем "Лист1"
worksheet := oWorksheets.GetType().InvokeMember(
'Item', BindingFlags.GetProperty, nil, oWorksheets, args);
args[0]:='a1';
range := worksheet.GetType().InvokeMember(
'Range', BindingFlags.GetProperty, nil, worksheet, args);
args[0] := 'LMD';
range.GetType().InvokeMember(
'Value', BindingFlags.SetProperty, nil, range, args);
workbook.GetType().InvokeMember(
'Save', BindingFlags.InvokeMethod, nil, workbook, nil);
workbook.GetType().InvokeMember(
'Close', BindingFlags.InvokeMethod, nil, workbook, nil);
// Уничтожение объекта Excel.
Marshal.ReleaseComObject(excel);
// Вызываем сборщик мусора для немедленной очистки памяти
GC.GetTotalMemory(true);
end;
end.
Игорь Шевченко (2008-06-29 16:43:00) [3]http://ln.com.ua/~openxs/articles/smart-questions-ru.html
programmmer90 (2008-06-29 15:52:00) [4]
> http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml
Желательно покороче, и на Делфи, а там в на нескольких языках :), всё равно спс.
Мне нужно односторонее(пока) движение, из Делфи в Ексель,
четкий и конкретный код...
Ляпа (2008-06-29 15:32:00) [5]
> programmer90 (29.06.08 14:20) [5]
http://www.rsdn.ru/article/dotnet/ExcelNELateBinding.xml
programmer90 (2008-06-29 14:20:00) [6]
> ExcelApplication.ActiveSheet.Cells[1, 1] := edit1.text
В Delphi 7.0 все предельно ясно в Delphi 2007 эта задача не поддаётся решению, вернее под Delphi 2007 .NET.
Пушу такой код
uses
...., ComObj;
.
.
VAR
excel:variant;
.
.
procedure .....ButtonClick....
BEGIN
excel:=CreateOleObject('Excle.Application');
Excel.Workbooks.Open['c:\nekotorijdocument.xls'];
Excel.Range['a1']:='Helo,world';
Excel.ActiveWorkbook.Close;
Excel.Application.Quit;
END;
Ошибка возникает в строке "CreateOleObject"- грит мол нипонятнааа...
Наверное действительно не понимает:)
Под Delphi 2007 Win32 всё работает замечательно.
Возможен ли какой-либо другой код?
Кто работал на новой версии Delphi 2007, HELP!!!
Заранее благодарю-с.
JanMihail (2008-06-27 22:10:00) [7]ExcelApplication.ActiveSheet.Cells[1, 1] := edit1.text
YurikGL (2008-06-27 21:29:00) [8]http://kladovka.net.ru/index.cgi?pid=board&rid=363
programmer90 (2008-06-27 18:52:00) [9]
> TExcelApplication?
Да хоть TЧтохотите главное чтобы из едита(комбобокса) попала в файл Excel.
clickmaker (2008-06-26 11:48:00) [10]TExcelApplication?