html - from - exportar tabla a archivo plano oracle
Oracle to Excel: procedimiento de exportación PL/SQL (12)
Puede guardar una hoja de Excel (pequeña) como html en Excel y luego reproducir ese formato.
Estoy escribiendo el procedimiento pl / sql que exporta datos de Oracle a Excel. Necesito formato de datos, así que no puedo usar CSV. Ya he intentado con XML, pero genera archivos demasiado grandes cuando quiero exportar, por ejemplo, 70000 filas con 50 columnas (¡casi 300 MB!).
Es por eso que decidí usar etiquetas HTML para generar archivos XLS, es más pequeño que XML y debo definir directamente el formato de solo algunas columnas especiales (las cadenas, los números y las fechas son formateados automáticamente por Excel). Es muy simple y conveniente, pero no puedo definir más de una hoja de trabajo.
¿Sabes cómo agregar / definir más de una hoja de trabajo en un archivo Excel escrito con HTML? Intenté usar la fórmula de VBScript como <% ActiveWorkbook.Worksheet.Add%>, pero no funciona.
Atentamente,
Przemek
Puede obtener la utilidad OWA-SYLK de Tom Kyte, que admite un subconjunto de características de formato .xls.
Hay un producto llamado SQL * XL que le permite ejecutar consultas SQL desde Excel, y los resultados aparecen en la hoja de cálculo (también se puede actualizar).
Es comercial, no gratuito, pero solo cuesta unos 50 €, por lo que no es caro. Lo uso bastante
He desarrollado un paquete en pl / sql para generar archivos de Excel con formato y varias hojas de trabajo, podría ser útil para usted.
http://sanjeev-oracle-world.blogspot.com/2007/06/create-excel-workbook-by-plsql-code.html
Saludos Sanjeev
ExcelDocumentType es una gran solución. Le permite generar documentos Excel de varias hojas completamente funcionales con PL / SQL. Lo puedes encontrar aquí:
http://radio.weblogs.com/0137094/2006/10/26.html
http://radio.weblogs.com/0137094/2009/01/02.html
(Rincón del desarrollador de Jason Bennett)
Tuve problemas similares y finalmente creé una hoja de cálculo con algún código de VBA que me preguntó y me colocó la hoja de cálculo. Mi tarea era exportar una serie de tablas, cada una en una hoja diferente, pero cualquier bandera podría usarse para cambiar a una hoja nueva. De todos modos, avíseme si desea ver el código. Aquí hay un pedazo que podría ayudarte. Simplemente cambie la cadena TableSQL a lo que sea que seleccione. Cada registro devuelto se insertará como una fila en la hoja. Luego, según la bandera que decida, puede crear y pasar a la siguiente hoja. Por favor, avíseme si necesita más información (ya que este ejemplo en particular no es EXACTAMENTE lo que está haciendo)
Private Sub getMyRows(inSchema As String, InTable As String)
Dim RS As Object
Dim TableSQL As String
Dim DataType As String
Dim DataLength As String
Dim DataPrecision As String
Dim DataScale As String
Dim ColCount As Integer
Dim WS As Worksheet
'' create a sheet with the current table as name
Worksheets.Add().Name = InTable
Set RS = CreateObject("ADODB.recordset")
TableSQL = "Select * from " & inSchema & "." & InTable
'' grab the data
RS.Open TableSQL, conn, adOpenStatic
For ColCount = 0 To RS.Fields.Count - 1
'' set column headings to match table
ActiveSheet.Cells(1, ColCount + 1).Value = RS.Fields(ColCount).Name
Next
'' copy table data to sheet
With Worksheets(InTable).Range("A2")
.CopyFromRecordset RS
End With
RS.Close
End Sub
Usamos métodos OOXML. Primero escribimos nuestro propio método para hacerlo en PL / SQL pero un compañero de trabajo encontró este producto llamado Excellant. Se pasa en una especificación xml con mapeos de columna y estilos / fórmulas (casi cualquier fórmula de Excel funciona), la consulta y le da una vuelta atrás. Entonces puedes ejecutar gzip en el clob si quieres hacerlo más pequeño. El producto es muy bueno, mi gerente lo compró con una tarjeta.
El sitio web es www.peak42solutions.com. No pudimos usar ODBC porque la gente de la red no permite el acceso directamente a la base de datos. Y ahora estamos enviando por correo electrónico la facturación en excel a los clientes.
Gracias,
Cuenta
Hay otro proyecto ORA_EXCEL ( www.oraexcel.com ) que puede producir documentos de Excel a partir de la base de datos de Oracle utilizando solo PL / SQL.
Encontré esta solución en la web (no inventada por mí), usando SQL plus:
set feed off markup html on spool on
spool c:/table1.xls
select * from table1;
spool off
set markup html off spool off
En lugar de crear archivos Excel o HTML en el servidor Oracle, puede buscar datos de Oracle en documentos existentes de Excel a través de ODBC u OLEDB. La falla es que debes tener cuidado con los permisos de usuario.
De: MSDN . Si desea que su hoja de trabajo sea portátil y no dependa de los DSN del sistema, puede conectarse usando una cadena de conexión como:
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=<PASSWORD>;Persist Security Info=True;User ID=<USER ID>;Data Source=<DATABASE NAME>"
cnn.Open
... luego usa la solución de Moleboy .
Su problema parece similar a un hilo aquí en SO ( Escribir en ExcelSheet usando el paquete UTL_FILE en Oracle ) y recientemente pude encontrar una solución simple a este problema. utilicé un paquete llamado as_xlsx
creado por Anton Scheffer, ( Crear un archivo de Excel con PL / SQL ) e hice algunas modificaciones para que cree varias hojas dentro de un solo Libro de Excel llevándolo a través de un Bucle. También es compatible con algunos formatos básicos, como el color de la celda, el estilo de fuente, el tamaño de la fuente, los bordes, etc. Es bastante ingenioso. ( Cree un archivo de Excel (.xlsx) usando PL / SQL ).
¡Espero que esto ayude!