PDA

Ver la Versión Completa : Insertar una linea en excel con ADO


joseprad
18-04-2013, 17:34:57
Hola amigos:
Espero haber situado esta consulta en el hilo adecuado.
Estoy intentando insertar un registro en la primera linea de una hoja excel con ADO y no encuentro la forma.

Con código siguiente, me funciona perfectamente, pero inserta al final y lo que yo necesito es que inserte al principio para que al importar la hoja poder utilizar los datos insertados como nombres de campo.
procedure TForm1.bto1Click(Sender: TObject);
var
sAppend: string;
d: string;
begin
d := 'Codigo';
sAppend := 'Select * from [Hoja1$]';
qry2.SQL.Text := sAppend;
qry2.Open;
qry2.First;
sAppend := 'INSERT INTO [Hoja1$] (Codi) values ("' + d + '")';
qry2.SQL.Text := sAppend;
qry2.ExecSQL;
end;


Muchas gracias anticipadas

Neftali [Germán.Estévez]
19-04-2013, 11:15:50
Creo que para poder insertarlos en la primera linea debes utilizar automatización o los componentes de la paleta Servers.
Si lo haces utilizando ADO, el sistema es como si lo hicieras en una tabla y los registros se añaden al final.

Al González
19-04-2013, 18:04:49
Por otro lado, si los archivos son de Excel versión 2007 o superior, cuentas con la alternativa de poder abrirlos sin usar automatización, ya que en el formato .xlsx los libros Excel no son más que ZIPs que contienen archivos XML (sheet1.xml, sheet2.xml...).

Como a cualquier otro XML, se les puede agregar, modificar o quitar nodos. En este caso sería insertar un elemento "<row>" (fila) con sus respectivos elementos hijos "<c>" (celdas), ajustando atributos de posición de los elementos desplazados. Para esto es menester conocer un poco del estándar OpenXML.

Así como Neftalí, te recomiendo intentar primero mediante automatización, por ser un proceso más simple.

Saludos. :)

joseprad
23-04-2013, 13:29:53
En primer lugar gracias por vuestras respuestas.

Pero el caso es que lo que quiero en no depender de Excel.

En la actualidad, como todos sabemos, disponemos de LibreOffice y OpenOffice dos excelentes programas que nos liberan de la opresión de Microsoft, además, las personas que utilicen mis programas mi intención es que puedan elegir libremente que programa utilizan.

Así que, con esta idea he seguido buscando por la red, con la idea de encontrar algo para LibreOffice.

Para los que estén interesados en cualquiera de las dos aplicaciones libres, he encontrado en la web de Bernard Marcell, algunos ejemplos bastante interesantes y aqui github.com/sergio-hcsoft/Delphi-SpreadSheets (https://github.com/sergio-hcsoft/Delphi-SpreadSheets), una librería para manipulación dual de Excel y OpenOffice.

No puedo poneros los enlaces porque si los pongo me sale un mensage de error que me indica que no tengo permisos suficientes.

Espero que pueda ayudar a alguien
Un saludo a todos

Neftali [Germán.Estévez]
23-04-2013, 14:19:47
Gracias por el enlace.
Si acabas utilizándolo estaría bien que nos comentaras qué tal funciona.

joseprad
23-04-2013, 20:41:42
Si que los estoy utilizando y funcionan perfectamente.

Con estos componentes no hay ningún problema en insertar lineas, modificarlas o hacer un montón de cosas tanto si es con excel como con LibreOffice.

Neftali [Germán.Estévez]
24-04-2013, 12:40:43
^\||/

Gracias por la información.