![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Bueno, no se si seguir el hilo pero con todo lo aqui dicho me parecio correcto continuar aqui. mi pregunta es:
¿ como incluyo formulas en las hojas excel creadas por este método ? logré incluir una formula poniendo un campo String con el contenido t.FieldByName(Cmp[ni]).AsString := '=H##-G##'; t.FieldByName(Cmp[nj]).AsString := '=H##*F##'; Pero ¿Como se usan las funciones de Excel? =Suma() -> =Sum() este funciona con SUM =SI() = Entero()
__________________
Sitrico |
|
#2
|
||||
|
||||
|
Pues mira, lo que yo hago es, crear primero la plantilla en Excel, la cual contendra, ya un formato predeterminado de fuentes, bordes, colores etc. y si deseo incluir alguna formula, en la misma plantilla la coloco donde desee que se aplique esta formula, al pasar los datos, en lugar de crear el archivo, llamo a la platilla y ahí vacio mis datos, y como caen a un formato predeterminado, todo es respetado, tanto formatos de texto, bordes etc. y las formulas funcionan muy bien.
Me expliqué???
__________________
http://www.imgsharing.com/uploads/1121174648007_A1.jpg |
|
#3
|
||||
|
||||
|
En este caso no me sirve lo de la plantilla, ya que la hoja es bastante compleja (una demostración de los calculos de un programa complejo según exigencias de la Ley) por eso estoy obligado a incluir las funciones de Excel, Ya logré usar fórmulas simples y la función SUMA que se usa por ej.
'=SUM(A1:A15)' ó '=RAND()' ----> Aleatorio Noten que es SUM y no SUMA ahora si trato de usar la funcion =SI() '=IF(B5-B6<0;B5-B6;0)' Me da un "Ole error 800A03EC" y lo mismo me pasa con la funcion ROUND (Redondear). He usado este código para hacer pruebas de sintaxis (en edit1.text) y no he podido encontrar el problema. Código:
Function LaFormula(f:String):String;
Var
p : Integer;
Begin
While(pos('##',f) <> 0) do
Begin
p := pos('##',f);
Delete(f,p,2);
Insert(IntToStr(Row),f,p);
End;
Result := f;
End;
procedure TForm1.Button1Click(Sender: TObject);
Var
RangeE:Range;
i,Row: Integer;
Begin
For i := 0 to Query1.FieldCount-1 do
begin
RangeE.Value := Query1.Fields[i].DisplayLabel;
RangeE := RangeE.Next;
End;
Row := 2;
While not(Query1.Eof) do
Begin
RangeE := ExcelApplication1.Range['A'+IntToStr(Row),'A'+IntToStr(Row)];
For i := 0 to Query1.FieldCount-1 do
begin
RangeE.Value := Query1.Fields[i].AsString;
RangeE := RangeE.Next;
End;
RangeE.Value := LaFormula('=SUM(C##:E##)');
RangeE := RangeE.Next;
RangeE.Value := LaFormula(Edit1.Text);
Query1.Next;
Inc(Row);
End;
end;
__________________
Sitrico Última edición por sitrico fecha: 26-04-2004 a las 23:23:09. |
|
#4
|
|||
|
|||
|
hola foro
mi intencion es importar una tabla a excel y con este ejemplo me va estupendamente, pero el problema esta cuando lo hago sin que se vea el excel, es decir con la opcion de visible a false, y lo cierro con un quit, que me pregunta si quiero grabar o no el libro excel, quisiera cerrar pero sin grabar, ya que lo uso para hacer un paso intermedio de combinar correspondencia con word, muchas gracias y espero haberme explicado bien.
__________________
Me da pena que se admire el valor en la batalla; menos mal que con los rifles no se matan las palabras. |
|
#6
|
|||
|
|||
|
muchas gracias Roman, pero esta opcion no me vale porque no uso el objeto de delphi ExcelApplication, si no que lo creo mas o menos asi
---------------------------
---------------------- pero al final me pide que si quiero grabar o no, y no se como decirle que me lo grabe directamente un saludo
__________________
Me da pena que se admire el valor en la batalla; menos mal que con los rifles no se matan las palabras. Última edición por roman fecha: 07-09-2006 a las 18:50:00. Razón: Añadir etiqueta [delphi] para mayor legibilidad |
|
#7
|
||||
|
||||
|
Cita:
// Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|