txt tabla plano from exportar developer datos create archivo html oracle excel vbscript plsql

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




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.

https://www.youtube.com/watch?v=Adz0zZFePf8


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!