C/Visual C - Ayuda para manipular excel9.olb

 
Vista:

Ayuda para manipular excel9.olb

Publicado por Tony (8 intervenciones) el 13/05/2003 10:07:12
Ola coleguillas. Me encargaron crear una dll en Visual c++ que manipule ojas de calculo de excel. Ya había creado una en visual basic empleando la librería <excel9.olb> y la cosa fue realmente sencilla. Lo malo es que en c la forma de manipular las clases y funciones de dicha librería es muy distinta.

Si alguna amable persona me pasara un ejemplo de como usar una clase de dicha librería (por ejemplo, como guardar el color de una fuente en una celdad o rango de celdas o crear o guardar el fichero *.xls ) le estaría muy agradecido.

Gracias al que tenga la amabilidad de echarme una mano.
Ciao!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ejemplo de manipulación de hojas de cálculo de Excel desde una DLL en Visual C++

Publicado por Alejandro (1153 intervenciones) el 02/06/2025 22:47:00
Tony, para manipular hojas de cálculo de Excel desde una DLL en Visual C++, puedes utilizar la automatización COM para interactuar con Excel. A continuación, te muestro un ejemplo básico de cómo crear una DLL que manipule Excel, incluyendo cómo cambiar el color de la fuente de una celda y guardar un archivo.

1. Configuración del proyecto



1. Crea un nuevo proyecto de DLL en Visual C++.
2. Asegúrate de que tienes la biblioteca de Excel registrada. Puedes hacerlo utilizando `regsvr32` para registrar `excel9.olb` si es necesario.

2. Código de ejemplo



Aquí tienes un ejemplo de cómo crear una DLL que manipule Excel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// ExcelManipulation.cpp : Define las funciones exportadas de la DLL.
#include "stdafx.h"
#include <comdef.h>
#include <iostream>
#include <windows.h>
#include <atlbase.h> // Para CComPtr
#include <comip.h> // Para CComPtr
 
// Importar la biblioteca de Excel
#import "C:\\Program Files\\Microsoft Office\\Office\\excel.exe" rename("RGB", "ExcelRGB") rename("Document", "ExcelDocument")
 
using namespace Excel;
 
// Función para manipular Excel
extern "C" __declspec(dllexport) void ManipulateExcel()
{
    CoInitialize(NULL); // Inicializa COM
 
    try {
        // Crear una instancia de Excel
        _ApplicationPtr pXL;
        pXL.CreateInstance("Excel.Application");
 
        // Hacer visible Excel
        pXL->Visible = VARIANT_TRUE;
 
        // Agregar un nuevo libro
        _WorkbookPtr pWorkbook = pXL->Workbooks->Add();
        _WorksheetPtr pWorksheet = pWorkbook->Worksheets->Item[1];
 
        // Cambiar el valor de una celda
        pWorksheet->Cells->Item[1][1] = "¡Hola, Excel!";
 
        // Cambiar el color de la fuente de una celda
        RangePtr pRange = pWorksheet->Range["A1"];
        pRange->Font->Color = ExcelRGB(255, 0, 0); // Rojo
 
        // Guardar el archivo
        pWorkbook->SaveAs("C:\\ruta\\a\\tu\\archivo.xls");
 
        // Cerrar el libro y Excel
        pWorkbook->Close(VARIANT_FALSE);
        pXL->Quit();
    }
    catch (_com_error &e) {
        std::cout << "Error: " << e.ErrorMessage() << std::endl;
    }
 
    CoUninitialize(); // Desinicializa COM
}

3. Compilación y uso



1. Compila la DLL. Asegúrate de que no hay errores.
2. Desde tu aplicación principal, puedes cargar la DLL y llamar a la función `ManipulateExcel()` para ejecutar el código.

4. Consideraciones



- Asegúrate de que la ruta a `excel.exe` en la línea de importación sea correcta según tu instalación de Office.
- Cambia la ruta en `SaveAs` a una ubicación válida en tu sistema.
- Este ejemplo utiliza `CComPtr` para manejar la memoria de los objetos COM automáticamente, lo que ayuda a evitar fugas de memoria.

Recursos adicionales



- Documentación de Microsoft sobre Automatización de Excel: Puedes encontrar más información sobre cómo trabajar con Excel a través de COM en la documentación oficial de Microsoft (https://learn.microsoft.com/en-us/office/vba/api/overview/excel).

Espero que este ejemplo te ayude a comenzar con la manipulación de hojas de cálculo de Excel desde una DLL en Visual C++.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar