首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将html表格数据移植到可读文档的最简单方法

将html表格数据移植到可读文档的最简单方法
EN

Stack Overflow用户
提问于 2011-09-12 15:26:03
回答 4查看 1.4K关注 0票数 0

好的,

在过去的6个月里,我一直在努力构建一个系统,它允许用户以大而性感的文本形式输入(支持大量的表格,列表等)。很大程度上使用户能够像输入word一样输入数据。然而,当我想要导出所有这些数据时,我一直无法找到一个有效的解决方案……

我的第一步是尝试找到一个报告软件,它确实支持数据源中的原始html,并将其呈现为普通的HTML,工作得很好,除了保持在一起的功能很糟糕,要么数据被一分为二(表格,列表等),这是我不想要的。或者报告总是跳到下一页以避免这种情况,最终在最终文档中出现15+空页。

因此,我正在寻找一些提示/方向,什么将是最好的解决方案,以出口我的数据到一个可读的文件(pdf或word首选)。

我得到的是下面的数据细目,其中的数据通常是原始的html。

-Period

--单位

-集团

-问题

-数据

最好的选择是什么?尝试将html呈现为pdf或rtf?我需要小贴士:

而且有时数据有2-3页长,包含混合的表格、列表和纯文本。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-12 16:01:31

我建议您尽量将其保留在浏览器中,并向HTML添加一个print stylesheet,使其以一种方式呈现在屏幕和another way on paper上。将打印样式表添加到HTML中就像这样简单:

代码语言:javascript
复制
<link rel="stylesheet" media="print" href="print.css">

你应该能够用Html Agility Pack这样的东西解析输入,并将其转换(即用XSLT)为你想要的任何输出格式。

另一种选择是在浏览器中编写超文本标记语言,但是如果将Content-Type设置为特定于Microsoft Word的变体(根据您所针对的Word版本,有几种可供选择),浏览器应该会询问用户是否要使用Microsoft Word打开页面。使用Word2007和更高版本,您还可以直接编写Office Open XML Word,因为它是基于XML的。

您可以使用的内容类型包括:

代码语言:javascript
复制
application/msword

用于二进制Microsoft Word文件,但也应适用于HTML。

代码语言:javascript
复制
application/vnd.openxmlformats-officedocument.wordprocessingml.document

对于较新的Word 2007和更高版本的"Office Open XML“格式。

票数 2
EN

Stack Overflow用户

发布于 2011-09-12 19:08:39

您可以使用的解决方案是使用System.Diagnostics.Process在服务器上运行一个应用程序,该应用程序将转换站点并将其保存为PDF文档。

你可以使用wkhtmltopdf,这是一个开源的控制台程序,可以将HTML转换为PDF或图像。

windows的安装程序可以从wkhtmltox-0.10.0_rc2 Windows Installer (i368)获得。

安装wkhtmltopdf后,您可以复制解决方案中安装文件夹中的文件。您可以在解决方案中使用如下设置:

转换后的pdf文件将保存到pdf文件夹中。

下面是进行转换的代码:

代码语言:javascript
复制
var wkhtmltopdfLocation = Server.MapPath("~/wkhtmltopdf/") + "wkhtmltopdf.exe";
var htmlUrl = @"http://stackoverflow.com/q/7384558/750216";
var pdfSaveLocation = "\"" + Server.MapPath("~/wkhtmltopdf/pdf/") + "question.pdf\"";

var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = wkhtmltopdfLocation;
process.StartInfo.Arguments = htmlUrl + " " + pdfSaveLocation;
process.Start();
process.WaitForExit();

htmlUrl是您需要转换为pdf的页面的位置。它被设置为此stackoverflow页面。:)

票数 2
EN

Stack Overflow用户

发布于 2011-09-12 16:03:08

这是一个一般性的问题,但是有两件事会出现在我的脑海中,那就是访问者模式和改变Mime类型。

访问者模式你可以有两种不同的渲染技术。这将取决于您的实现。

MIME类型发出请求时在响应中写入日期等

代码语言:javascript
复制
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "utf-16";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}.doc", filename));
HttpContext.Current.Response.ContentType = "application/msword";
HttpContext.Current.Response.Write("-Period");
HttpContext.Current.Response.Write("/n");
HttpContext.Current.Response.Write("--Unit");
HttpContext.Current.Response.Write("/n");
HttpContext.Current.Response.Write("---Group");
HttpContext.Current.Response.Write("/n");
HttpContext.Current.Response.Write("----Question");
HttpContext.Current.Response.Write("/n");
HttpContext.Current.Response.Write("-----Data");
HttpContext.Current.Response.Write("/n");
HttpContext.Current.Response.End();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7384558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档