то что я использую для работы с экселем под седьмыми делфями:
//вырезано
uses
... ComCtrls, ExtCtrls, OleServer, ComObj;
//вырезано
const
lcid = LOCALE_USER_DEFAULT;
//вырезано
var
XL :Variant;
//вырезано
XL:= CreateOleObject('Excel.Application');
//создаем новую книгу
XL.WorkBooks.Add;
//открываем книгу
XL.Workbooks.Open('c:\test.xls', // Filename: WideString;
2, // UpdateLinks: OleVariant; 2 - never update
False, // ReadOnly: OleVariant;
EmptyParam, // Format: OleVariant;
EmptyParam, // Password: OleVariant;
EmptyParam, // WriteResPassword: OleVariant;
EmptyParam, // IgnoreReadOnlyRecommended: OleVariant;
EmptyParam, // Origin: OleVariant;
EmptyParam, // Delimiter: OleVariant;
EmptyParam, // Editable: OleVariant;
EmptyParam, // Notify: OleVariant;
EmptyParam, // Converter: OleVariant;
False, // AddToMru: OleVariant;
lcid);
//копируем из второй книги первую страницу в первую книгу, вставляя ее первой страницей
XL.WorkBooks[2].WorkSheets[1].Copy(XL.Workbooks[1].Sheets[1], EmptyParam);
//удаляем в первой книге вторую страницу
XL.WorkBooks[1].WorkSheets[2].Delete;
//закрываем вторую книгу
XL.WorkBooks[2].Close(0);
//записываем в ячейку текст. можно цифры. конвертируется само.
XL.WorkBooks[1].WorkSheets[1].Cells[2,1]:='Это тест';
//сохраняем документ (если уже существует, то эксель будет ругаться. если найдешь как запретить спрашивать про перезапись - скажи)
XL.WorkBooks[1].SaveAs('C:\test2.xls',
56, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, lcid);
//показать сформированный документ
XL.Visible:= true;
//отключаемся от офиса
XL:= UnAssigned;