Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

импорт из 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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо