Oracle 使用PL/SQL写入docx文件

Oracle 使用PL/SQL写入docx文件,oracle,plsql,docx,Oracle,Plsql,Docx,实际上,我正在编写一个用于Oracle数据库审核的PL/SQL包(包含诸如总RAM、操作系统版本、内存比等信息),并且我希望将此审核的输出写入一个docx文件(或任何可以通过Microsoft Office 2007读取和编辑的文件格式)。 我该怎么做 我找到了一种方法,但这并不是我想要的,因为您必须使用带有标记的模板,并将值逐个绑定到这些标记()。此外,我必须在审计之前部署一个包,这并不总是可能的 如果我可以做到这一点,没有外部包(第三方),这将是很酷的 谢谢;) 是的,这可以在不使用外部库的

实际上,我正在编写一个用于Oracle数据库审核的PL/SQL包(包含诸如总RAM、操作系统版本、内存比等信息),并且我希望将此审核的输出写入一个docx文件(或任何可以通过Microsoft Office 2007读取和编辑的文件格式)。 我该怎么做

我找到了一种方法,但这并不是我想要的,因为您必须使用带有标记的模板,并将值逐个绑定到这些标记()。此外,我必须在审计之前部署一个包,这并不总是可能的

如果我可以做到这一点,没有外部包(第三方),这将是很酷的


谢谢;)

是的,这可以在不使用外部库的情况下完成。不过我只能给你一个大纲,而不是实际的代码

首先,
.docx
.xlsx
格式不是实际的文档;它们是压缩文件。可以使用Java存储过程从数据库中删除数据。其次,其中的文件是可读文本格式、XML等

如果我们看看我创造的一个,你就能明白我的意思

[19:28:27]\\ELZAR\h:\ unzip -l blah.docx
Archive:  blah.docx
 Length    Date    Time    Name
 ------    ----    ----    ----
   2387  01-01-80  00:00   [Content_Types].xml
    590  01-01-80  00:00   _rels/.rels
   1880  01-01-80  00:00   word/_rels/document.xml.rels
 107400  01-01-80  00:00   word/document.xml
   2460  01-01-80  00:00   word/footer2.xml
   1428  01-01-80  00:00   word/endnotes.xml
   1434  01-01-80  00:00   word/footnotes.xml
   2624  01-01-80  00:00   word/header1.xml
    289  01-01-80  00:00   word/_rels/header1.xml.rels
   2497  01-01-80  00:00   word/footer1.xml
2765888  01-01-80  00:00   word/media/image1.emf
   7076  01-01-80  00:00   word/theme/theme1.xml
   4600  01-01-80  00:00   word/settings.xml
    363  01-01-80  00:00   word/_rels/settings.xml.rels
  25836  01-01-80  00:00   word/styles.xml
    341  01-01-80  00:00   customXml/itemProps1.xml
  54486  01-01-80  00:00   word/numbering.xml
    296  01-01-80  00:00   customXml/_rels/item1.xml.rels
    218  01-01-80  00:00   customXml/item1.xml
    808  01-01-80  00:00   docProps/core.xml
   2786  01-01-80  00:00   word/fontTable.xml
   2826  01-01-80  00:00   word/webSettings.xml
  26589  01-01-80  00:00   word/stylesWithEffects.xml
   1025  01-01-80  00:00   docProps/app.xml
 ------                    -------
3016127                    24 files
因为这些都是普通文件,所以您可以使用以下方式编写它们

<>我会认真考虑你输出到<代码>的动机。这并不容易,但是是的;这是可能的


为什么不简单地将信息存储在数据库中,并基于此创建一个报告,您可以通过电子邮件发送给自己呢。你的生活会轻松得多。

是的,不使用外部库也可以做到这一点。不过我只能给你一个大纲,而不是实际的代码

首先,
.docx
.xlsx
格式不是实际的文档;它们是压缩文件。可以使用Java存储过程从数据库中删除数据。其次,其中的文件是可读文本格式、XML等

如果我们看看我创造的一个,你就能明白我的意思

[19:28:27]\\ELZAR\h:\ unzip -l blah.docx
Archive:  blah.docx
 Length    Date    Time    Name
 ------    ----    ----    ----
   2387  01-01-80  00:00   [Content_Types].xml
    590  01-01-80  00:00   _rels/.rels
   1880  01-01-80  00:00   word/_rels/document.xml.rels
 107400  01-01-80  00:00   word/document.xml
   2460  01-01-80  00:00   word/footer2.xml
   1428  01-01-80  00:00   word/endnotes.xml
   1434  01-01-80  00:00   word/footnotes.xml
   2624  01-01-80  00:00   word/header1.xml
    289  01-01-80  00:00   word/_rels/header1.xml.rels
   2497  01-01-80  00:00   word/footer1.xml
2765888  01-01-80  00:00   word/media/image1.emf
   7076  01-01-80  00:00   word/theme/theme1.xml
   4600  01-01-80  00:00   word/settings.xml
    363  01-01-80  00:00   word/_rels/settings.xml.rels
  25836  01-01-80  00:00   word/styles.xml
    341  01-01-80  00:00   customXml/itemProps1.xml
  54486  01-01-80  00:00   word/numbering.xml
    296  01-01-80  00:00   customXml/_rels/item1.xml.rels
    218  01-01-80  00:00   customXml/item1.xml
    808  01-01-80  00:00   docProps/core.xml
   2786  01-01-80  00:00   word/fontTable.xml
   2826  01-01-80  00:00   word/webSettings.xml
  26589  01-01-80  00:00   word/stylesWithEffects.xml
   1025  01-01-80  00:00   docProps/app.xml
 ------                    -------
3016127                    24 files
因为这些都是普通文件,所以您可以使用以下方式编写它们

<>我会认真考虑你输出到<代码>的动机。这并不容易,但是是的;这是可能的


为什么不简单地将信息存储在数据库中,并基于此创建一个报告,您可以通过电子邮件发送给自己呢。你的生活会轻松得多。

你说的很有趣,但我显然无法将样式应用于文本(或者很难同时写入多个XML文件)。我知道用docx写作不是最好的方式,也更容易,但我没有选择。这些工具将被公司的其他人使用,他们需要一个可以用Word 2007打开和编辑的文档。如果你要这样做,我会从另一个方向@Toin3着手。a) Word 2007可以以您想要的方式读取和呈现哪些格式?找到最简单的创建方法并执行该操作。b) 如果您决定使用.docx,那么创建一个,将其拆开并研究。了解如何单独创建每个文件,并逐步将其构建为您想要的文件。编写许多XML文件都可以在同一个过程中完成,因此创建这些文件需要一段时间,但肯定可以完成。是的,你是对的。通过您的方法,我想我最终找到了获得.docx的方法。我将尝试使用PL/SQL过程编写一个HTML文件,并将mimetype更改为docx mimetype。Word 2007将毫无问题地打开它,一旦从Word编辑并保存了文件,它将被转换为真正的docx结构(我尝试过,它似乎可以正常工作)。谢谢你的帮助。@Toin3我确实试过了。将mimetype更改为DOCX不起作用。MS Office出现错误,表示内容已损坏。不过,将其转换为DOC效果很好。您所说的非常有趣,但我显然无法将样式应用于文本(或者很难同时写入多个XML文件中)。我知道用docx写作不是最好的方式,也更容易,但我没有选择。这些工具将被公司的其他人使用,他们需要一个可以用Word 2007打开和编辑的文档。如果你要这样做,我会从另一个方向@Toin3着手。a) Word 2007可以以您想要的方式读取和呈现哪些格式?找到最简单的创建方法并执行该操作。b) 如果您决定使用.docx,那么创建一个,将其拆开并研究。了解如何单独创建每个文件,并逐步将其构建为您想要的文件。编写许多XML文件都可以在同一个过程中完成,因此创建这些文件需要一段时间,但肯定可以完成。是的,你是对的。通过您的方法,我想我最终找到了获得.docx的方法。我将尝试使用PL/SQL过程编写一个HTML文件,并将mimetype更改为docx mimetype。Word 2007将毫无问题地打开它,一旦从Word编辑并保存了文件,它将被转换为真正的docx结构(我尝试过,它似乎可以正常工作)。谢谢你的帮助。@Toin3我确实试过了。将mimetype更改为DOCX不起作用。MS Office出现错误,表示内容已损坏。然而,将其转换为DOC效果很好。