FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
salvar fichero excel
Muy buenas,
he empezado a trabajar con excel des de delphi y tengo un gran problema, no sé como crear un fichero excel. He buscado en los foros y he descubierto como abrir y llenar un fichero ya creado, pero no consigo encontrar un ejemplo que lo genere des de cero. He probado con los componentes de la paleta 'servers' y también con un objecto de tipo variant, pero no hay modo de que me grabe el .xls. Alguien puede ayudarme? Muchas grácias, Ester |
#2
|
||||
|
||||
Yo creo un nuevo archivo con algo similar a esto:
Código:
var Libro : _WORKBOOK; Hoja : _WORKSHEET; begin Libro := Excel.Workbooks.Add(Plantilla, 0); Hoja := Libro.Sheets[1] as _WORKSHEET; Luego,con Excel.Visible[0] := true muestras Excel o bien puedes usar el método SaveAs del objeto _WORKSHEET para guadar el archivo. // Saludos |
#3
|
|||
|
|||
Hola:
Muy bien Roman, he hecho como tú dices pero ahora el método SaveAs de _woorkSheet me pide unos parámetros que no sé como se definen Saludos
__________________
Ernesto R. |
#4
|
||||
|
||||
Prueba con
Código:
Libro.SaveAs( NombreArchivo, Null, Null, Null, false, false, xlNoChange, xlUserResolution, false, Null, Null, 0 ); |
#5
|
|||
|
|||
Hola Ernesto
Debes revisar el código, lo que puede suceder es que estes tratando de guardar la hoja Hoja.SaveAs( ...... Pero si no guardas primero el Libro, como te indico Roman, entonces te va a generar un EAccessViolation. var Libro : _WORKBOOK; Hoja : _WORKSHEET; begin Libro := Excel.Workbooks.Add(NULL, 0); Hoja := Libro.Sheets[1] as _WORKSHEET; Libro.SaveAs(Nombre, Null, Null, Null, false, false, xlNoChange, xlUserResolution, false, Null, Null, 0 ); |
#6
|
||||
|
||||
Cita:
Habrá que probar... ... sólo que me da flojera con tantos parámetros // Saludos |
#7
|
|||
|
|||
Hola:
He hecho todo como me han indicado y funciona de maravilla, pero si ahora quiero meter valores en las celdas de la hoja, en los ejemplos del foro viene de la siguiente manera: Hoja.Cells[1,1].Value := variable; pero no funciona porque los ejemplos del foro utilizan la expresión, para abrir excel: CreateOleObject('Excel.Application'); alguien me puede ayudar? saludos
__________________
Ernesto R. |
#8
|
||||
|
||||
Cita:
Ya sea que crees el objeto mediante CreateOleObject o utilizando una componente TExcelApplication (y la verdad no entiendo por qué se complican la vida utilizando CreateOleObject), el objeto tiene la propiedad WorkBooks a partir de la cual creas el nuevo libro y la nueva hoja. // Saludos |
#9
|
|||
|
|||
Hola:
Ahora solo necesito saber como le hago para asignarle valor a una o varias celdas usando un objeto TExcelApplication, te agradeceré una ayuda en esa cuestion. Saludos
__________________
Ernesto R. |
#10
|
||||
|
||||
Cita:
Código:
var Libro : _WORKBOOK; Hoja : _WORKSHEET; begin Libro := Excel.Workbooks.Add(Plantilla, 0); Hoja := Libro.Sheets[1] as _WORKSHEET; Código:
Hoja.Cells[1,1].Value := variable; // Saludos |
#11
|
|||
|
|||
Ahora me contesto yo mismo, uso Delphi 7 por lo que no estoy muy seguro si para versiones anteriores de Delphi sea lo mismo.
Si se usa un objeto TExcelApplication para usar el Excel entonces, para llenar el valor de la celda A1, se usa : Excel.Cells.Items[1, 'A'] := Variable; Gracias por todo, y por cierto el metodo SaveAs(.....) con todos los parámetros que amablemente me proporcionaron funciona si en el uses de la unidad se tiene declarada Excel2000, para versiones posteriores(por ejemplo Office XP) se agrega un penultimo parametro( que estoy investigando cual puede ser) Saludos y un abrazo
__________________
Ernesto R. |
#12
|
||||
|
||||
Error al escribir el mismo codigo
Hola!!!
Estoy intentando hacer lo que estaban tratando, acerca de crear un archivo excel, pero esto no me funciona y me tira el error cuando quiero poner informacion en el archivo abierto: [Error] xxxxxxxxxxx.pas(784): Class does not have a default property cual es mi problema? de antemano gracias. Código Código:
var Hoja : _WORKSHEET; Libro : _WORKBOOK; begin Excel.Connect; Libro := Excel.Workbooks.Add(NULL, 0); Hoja := Libro.Sheets[1] as _WORKSHEET; //Esta linea es la que me da ese error Hoja.Cells[1, 1].Value := 'hola'; Excel.Visible[0] := true;
__________________
Sebastian Ibarrola -------------------------- |
#13
|
||||
|
||||
Intenta cambiar
Hoja.Cells[1, 1].Value := 'hola'; por Hoja.Cells.Item[1, 1].Value := 'hola'; // Saludos |
#14
|
|||
|
|||
Puntual
Para ser sincero no he seguido mucho el hilo, pero creo entender que ocurre haci que te mando la linea como deveria ser
para los componentes office xp en delphi 7 {TExcelWorkBook} wkbExcel.SaveAs('c:\datos\uno.xls', Null, Null, Null, False, False, xlNoChange, xlUserResolution, False, Null, Null, 0, lcid); para los componentes office 2000 en delphi 7 {TExcelWorkBook} wkbExcel.SaveAs('c:\datos\uno.xls, Null, Null, Null, False, False, xlNoChange, xlUserResolution, False, Null, Null, lcid); |
#15
|
|||
|
|||
Salu2 quisiera saber si me pueden ayudar con mi código....
he desarrollado este código siguiendo este hilo, no da error pero no abre excel ni muestra lo que debe.... gracias adelantadas
__________________
Las cosas o son, o no son... |
#16
|
||||
|
||||
Cita:
? (En este hilo también se menciona)
__________________
Tiempo y ocasión acontecen a todos! |
#17
|
|||
|
|||
Cita:
|
#18
|
||||
|
||||
Cita:
Donde bGenerarArchivo es una variable booleana que indica si el archivo se crea o se abre; sArchivo es una variable string con la ruta y nombre del archivo; y sSheetName es el nombre de la hoja a donde vas a escribir. Toma en cuenta que este ejemplo es sin usar TExcelApplication (por eso puse el codigo con el que se crea el objeto), así que usándolo debe ser algo muy parecido. Saludos.
__________________
Tiempo y ocasión acontecen a todos! Última edición por nuk3zito fecha: 22-04-2009 a las 05:14:35. |
#19
|
|||
|
|||
Cita:
|
#20
|
|||
|
|||
Ya realice las modificaciones necesarias de acuerdo a la información que me diste y trabaja super bien, no utilice el comando
Try Excel := GetActiveOleObject('Excel.Application') Except Excel := CreateOleObject('Excel.Application') End; ya que me daba error al leer, entonces lo solo cree, como no creare un nuevo archivo de excel solo utilice los comandos necesarios que fueron Libro := Excel.WorkBooks.Open(sArchivo); xlSheet := Libro.WorkSheets.Item[sShetName); Dentro de un if para determinar la hoja de excel en la que se guardará la información y un while para llenarla el programa quedo así procedure TGeneraListasFrm.SpeedButton2Click(Sender: TObject); Var Excel, Libro, Hoja : Variant; i : integer; begin i := 7; Excel := CreateOleObject('Excel.Application'); Libro := Excel.WorkBooks.Open('E:\Mis Documentos\feb08.xls'); if ModuloDatosFrm.ZListaQrycgrado.Value = 'PREP01' then Begin Hoja := Libro.WorkSheets.Item[6]; With ModuloDatosFrm.ZListaQry Do Begin First; while not EOF do Begin i := i + 1; Hoja.Cells.Item[i,1] := DbGrid1.Fields[0].AsString; Next; End; End; Excel.Visible := True; End Else if ModuloDatosFrm.ZListaQrycgrado.Value = 'PREP02' then Begin Hoja := Libro.WorkSheets.Item[7]; With ModuloDatosFrm.ZListaQry Do bueno y continua hasta 'PREP06' |
|
|
|