Para ello utilizaremos el mismo componente: TExcelApplication. Le pondremos igualmente en su propiedad Name el nombre Excel. Mi objetivo es crear esta hoja de cálculo:
Esta hoja contiene 4 columnas con las unidades, el nombre del artículo, el precio y total línea. La columna del total debe contener una fórmula que multiplique las unidades por el precio.
Vamos a ver paso a paso como crear esta hoja de cálculo:
1º Declaramos la variable Hoja de tipo _WorkSheet para que apunte a la hoja de cálculo con la que estamos trabajando:
var
Hoja: _WorkSheet;
2º Ejecutamos una instancia de Excel y creamos un nuevo libro (Workbook):
// Abrimos excel
Excel.Connect;
// Creamos un nuevo libro con tres hojas (predeterminado)
Excel.Workbooks.Add( NULL, 0 );
3º A la primera hoja del libro la llamamos Presupuesto:
// Apuntamos a la primera hoja y le cambiamos el nombre
Hoja := Excel.Worksheets.Item[1] as _WorkSheet;
Hoja.Name := 'Presupuesto';
4º Creamos los títulos de las columnas:
// Títulos de los datos
Hoja.Range['A1','A1'].Value2 := 'UNIDADES';
Hoja.Range['B1','B1'].Value2 := 'ARTICULO';
Hoja.Range['B1','B1'].ColumnWidth := 30;
Hoja.Range['C1','C1'].Value2 := 'PRECIO';
Hoja.Range['D1','D1'].Value2 := 'TOTAL';
Hoja.Range['A1','D1'].Font.Bold := True;
Aparte de introducir los títulos he utilizado las propiedades ColumnWidth y Font.Bold para ensanchar la columna del artículo y para poner todos los títulos en negrita.
5º Introducimos los datos dentro de las columnas:
// Datos
Hoja.Range['A2','A2'].Value2 := 3;
Hoja.Range['B2','B2'].Value2 := 'BOLIGRAFOS';
Hoja.Range['C2','C2'].Value2 := 1.25;
Hoja.Range['A3','A3'].Value2 := 2;
Hoja.Range['B3','B3'].Value2 := 'LIBRETAS';
Hoja.Range['C3','C3'].Value2 := 2.4;
Hoja.Range['A4','A4'].Value2 := 5;
Hoja.Range['B4','B4'].Value2 := 'LAPICES';
Hoja.Range['C4','C4'].Value2 := 0.45;
Al ser la propiedad Value2 de tipo Variant podemos introducir datos de todo tipo sin necesidad de realizar conversiones.
6º En la última columna vamos a introducir una fórmula para multiplicar unidades por precio:
// Fórmulas
Hoja.Range['D2','D2'].Formula := '=A2*C2';
Hoja.Range['D3','D3'].Formula := '=A3*C3';
Hoja.Range['D4','D4'].Formula := '=A4*C4';
7º Damos formato decimal a las columnas del precio y los totales y para ésta última columna le cambiamos los colores:
// Formato decimal
Hoja.Range['C2','D4'].NumberFormat := '0,00';
// Damos formato a los totales
Hoja.Range['D2','D4'].Font.Bold := True; // fuente negrita
Hoja.Range['D2','D4'].Font.Color := clBlue; // fuente azul
Hoja.Range['D2','D4'].Borders.Color := clRed; // borde rojo
Hoja.Range['D2','D4'].Interior.Color := clYellow; // fondo amarrillo
8º Por último guardamos la hoja de cálculo y desconectamos de Excel:
// Lo primero que hacemos es guardarlo
Excel.ActiveWorkbook.SaveAs( ExtractFilePath( Application.ExeName ) + 'Nueva.xls',
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, xlNoChange,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, 0);
Excel.Quit;
Excel.Disconnect;
La hoja de cálculo la hemos guardado con el nombre Nueva.xls dentro de mismo directorio donde se ejecuta nuestra aplicación.
Y es que no hay nada mejor que sacarle partido a Microsoft Office para que nos haga el trabajo sucio.
Pruebas realizadas en RAD Studio 2007.