docx
我已经保存了一个文档bytes[]
,我需要将它传递给 html,以便我可以在页面上显示它。
我正在使用带有 .NET 的 Visual Studio 在 C# 中开发它。
目前它适用于我从易于转换为 html 的 pdf 文件,但docx
任何 Microsoft 产品都不是这种情况,因为我不能使用本机库interop
,因为它不能保证服务器已安装它。
最终结果是:
strFinalDoc = strFinalDoc.Replace("<body>", "<body>" + documentInfoHtml + "<BR /><BR />");
将它们转换为 htmldocumentInfoHtml
的结果在哪里,只是替换页面的内容。bytes[]
strFinalDoc
body
我找到了一个解决方案,但实际上interop
他们都使用付费图书馆。
您知道使用免费软件或开放项目的任何方法吗?
我还必须对文件xls
和xlsx
.
当前的答案非常好,但它只涵盖一个文件doc
而不是docx
尽可能多地保留现有的 CSS 样式也很重要,因此仅提取内容以自己生成它的答案HTML
是不够的,因为它会丢失所有格式。
使用 Apache POI 相对容易。所以我们可以使用NPOI在 C# 中进行转换。
基于使用 Apache POI 将 Word 转换为 HTML 的答案
让我们将其转换为 C#
我建议您不要通过 nuget(当前版本 2.2.1)下载 NPOI 并使用 2.1.3.1 版本,而是从官方页面下载,因为需要另外两个文件,这些文件不是 nuget 中的
NPOI.ScratchPad.HSSF.dll
,并且NPOI.ScratchPad.HWPF.dll
都是使用 NET Framework 2.x 编译的并且您需要其他库也是 2.x 版本。这 2 个文件可以从NPOI Github下载做测试似乎 NPOI 的版本在 HTML 的最终结果中有一个错误,因为为了模拟格式,它创建了带有标签类型的第一个字母和递增数字的样式
但由于某种原因,NET 版本无法正确呈现它们
也许它与
Transformer
它有关,但我不知道 C# 中的等价物是什么通过手动计数,您可能不再需要使输出看起来不错
好吧,Word 文档是由 XML 组成的,所以为什么不从这一点开始,只需将您
XML
的HTML
. 查看MSDN页面,他们向您展示了 xml 中 word 文档的结构,这是结构:并且以同样的方式在MSDN中他们也给你一个使用的例子
XmlDocument Class
,这里是一个例子:现在,要访问节点,您可以这样做:
这就是您已经将所有代码连接到它的地方
HTML
。我在MSDN XmlDocument 类中看到了代码转换
正如您已经意识到的那样,docx 只不过是一个压缩的 xml,因此很容易转换为 HTML。
运送给客户
要将信息发送给客户端(以确保他们不只看到一个 txt),您必须记住首先发送标头:
在 charset 中,您必须输入对应的内容以及内容长度(以字节为单位,而不是 chars,请记住 utf8 char 可以测量多个字节)。使用长度是为了让浏览器知道它需要多少字节,并且可以在文档很长时放置进度条。
袖珍的
一旦它在没有压缩的情况下工作,您可以考虑使用中间件或模块来发送压缩信息(例如 gzip)