我们可以使用java生成.html文档吗?通常我们在cmd提示符中输出我们运行java程序的输出。我想以.html或.doc格式生成输出是他们在java中的一种方式吗?
答案 0 :(得分:3)
适用于HTML
只需将数据写入.html文件(它们只是扩展名为.html的文本文件),使用原始文件操作
例如:
StringBuilder sb = new StringBuilder();
sb.append("<html>");
sb.append("<head>");
sb.append("<title>Title Of the page");
sb.append("</title>");
sb.append("</head>");
sb.append("<body> <b>Hello World</b>");
sb.append("</body>");
sb.append("</html>");
FileWriter fstream = new FileWriter("MyHtml.html");
BufferedWriter out = new BufferedWriter(fstream);
out.write(sb.toString());
out.close();
对于word文档
答案 1 :(得分:2)
HTML只是带有一堆标签的纯文本,正如其他人已经回答的那样。我的建议是,如果你做的事情比输出基本的HTML片段更复杂,那就是使用模板引擎,例如StringTemplate。
StringTemplate允许您创建一个如下所示的文本文件(实际上是一个HTML文件):
<html>
<head>
<title>Example</title>
</head>
<body>
<p>Hello $name$</p>
</body>
</html>
这是你的模板。然后在Java代码中,您将填写$name$
占位符,然后输出生成的HTML页面:
StringTemplate page = group.getInstanceOf("page");
page.setAttribute("name", "World");
System.out.println(page.toString());
这将在您的屏幕上打印出以下结果:
<html>
<head>
<title>Example</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
当然,上面的示例Java代码不是完整的代码,但它说明了如何使用仍然有效的HTML模板(使其更容易在HTML编辑器中编辑),同时保持Java代码简单(通过避免在System.out.println
语句中包含大量HTML标记。
至于MS Office .doc格式,这个更复杂,您可以查看Apache POI。
答案 2 :(得分:1)
输出只是输出。它意味着什么以及如何使用它完全取决于你。
如果您System.out.println('<p>Hello world!</p>');
刚刚制作了HTML。
.doc
格式显然有点棘手,因为放入标签并不是一件简单的事情,但是有一些库可以完成工作。谷歌可以推荐不止一些。
答案 3 :(得分:1)
HTML只是纯文本。只需将HTML代码写入文件或标准输出即可。
Word文件更复杂。看一下像Apache POI这样的图书馆。
答案 4 :(得分:1)
我已经感觉到过去的需求,我最终开发了一个java库 - HtmlFlow(部署在Maven Central Repository) - 它提供了一个简单的API来以流畅的方式编写HTML。请在此处查看:https://github.com/fmcarvalho/HtmlFlow。
您可以在有或没有数据绑定的情况下使用HtmlFlow,但在此我提供了将Task
对象的属性绑定到HTML元素的示例。考虑具有三个属性的Task
Java类:Title
,Description
和Priority
然后我们可以为以下Task
对象生成HTML文档方式:
import htmlflow.HtmlView;
import model.Priority;
import model.Task;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class App {
private static HtmlView<Task> taskDetailsView(){
HtmlView<Task> taskView = new HtmlView<>();
taskView
.head()
.title("Task Details")
.linkCss("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css");
taskView
.body().classAttr("container")
.heading(1, "Task Details")
.hr()
.div()
.text("Title: ").text(Task::getTitle)
.br()
.text("Description: ").text(Task::getDescription)
.br()
.text("Priority: ").text(Task::getPriority);
return taskView;
}
public static void main(String [] args) throws IOException{
HtmlView<Task> taskView = taskDetailsView();
Task task = new Task("Special dinner", "Have dinner with someone!", Priority.Normal);
try(PrintStream out = new PrintStream(new FileOutputStream("Task.html"))){
taskView.setPrintStream(out).write(task);
Runtime.getRuntime().exec("explorer Task.html");
}
}
}
答案 5 :(得分:0)
不确定。
一般方法:在内存中创建文档,即在StringBuilder
中创建文档,并将该构建器的内容写入文件。
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.append("<html><body>");
htmlBuilder.append("Hello world!");
htmlBuilder.append("</body></html>\n");
FileWriter writer = new FileWriter(System.getProperty("user.home") + "/hello.html");
writer.write(htmlBuilder.toString());
writer.close();
将它放在main
方法中,执行,你会在你的主目录中找到一个html文件
答案 6 :(得分:0)
我不知道你为什么这么说:
通常我们会在cmd提示符中获得输出 我们运行java程序。
我今天一直在运行一些java程序,但是他们没有对cmd提示做任何事情。如果你使用system.out.println
,是的,但大多数高级程序都有更多的通信。像界面一样:))
您要做的是查看文件处理程序。打开(或创建)文件,将内容写入该文件并关闭它。然后你有一个文件。您可以将任何想要的内容写入该文件,因此显然也可以使其成为HTML或文档。在文件编写
上很容易找到howtos答案 7 :(得分:0)
检查一下:
try {
BufferedWriter out = new BufferedWriter(new FileWriter("outfilename.html"));
out.write("aString"); //Here you pass your output
out.close();
} catch (IOException e) {
}
您将需要导入BufferedWriter,FileWriter和IOException,它们位于java.io下
&#34; aString&#34;应该是一个存储html代码或doc xml
的String变量答案 8 :(得分:0)
要生成HTML文档,您应该写入文件。由于HTML是文本格式,因此您可以写入文本文件。这样做需要这些类
java.io.File - 这表示文件系统中的位置
java.io.FileWriter - 这建立了从程序到文件的连接
java.io.BufferedWriter - 这可以实现文本的缓冲写入,速度更快
java.io.IOException - 如果写入有问题,则会抛出其中一个恶意内容 文件。它是一个已检查(与运行时相对)的异常,您必须处理它。
Head First Java书籍包含对这些类的非常好的介绍,并向您展示如何使用它们。要使用这些,您必须首先了解异常处理。这也包含在Head First Java中。
我希望这能让你开始。
答案 9 :(得分:0)
如果您有一些类似文档的数据(结构化),我建议使用DOM(文档对象模型),然后将其转换为所需的格式(xml,html,doc,等等)。但是如果你只有一些应用程序输出,你可以用html轻松地包装它。不一定在java中 - 您还可以将程序的输出存储在纯文本文件中,稍后将其转换为html(添加body,paragprahs,headers和其他HTML元素)。
答案 10 :(得分:0)
创建纯HTML的非常简单可靠的方法可能基于SAX处理程序和默认的XSLT转换器,后者具有HTML输出的内在功能:
String encoding = "UTF-8";
FileOutputStream fos = new FileOutputStream("myfile.html");
OutputStreamWriter writer = new OutputStreamWriter(fos, encoding);
StreamResult streamResult = new StreamResult(writer);
SAXTransformerFactory saxFactory =
(SAXTransformerFactory) TransformerFactory.newInstance();
TransformerHandler tHandler = saxFactory.newTransformerHandler();
tHandler.setResult(streamResult);
Transformer transformer = tHandler.getTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
writer.write("<!DOCTYPE html>\n");
writer.flush();
tHandler.startDocument();
tHandler.startElement("", "", "html", new AttributesImpl());
tHandler.startElement("", "", "head", new AttributesImpl());
tHandler.startElement("", "", "title", new AttributesImpl());
tHandler.characters("Hello".toCharArray(), 0, 5);
tHandler.endElement("", "", "title");
tHandler.endElement("", "", "head");
tHandler.startElement("", "", "body", new AttributesImpl());
tHandler.startElement("", "", "p", new AttributesImpl());
tHandler.characters("5 > 3".toCharArray(), 0, 5); // note '>' character
tHandler.endElement("", "", "p");
tHandler.endElement("", "", "body");
tHandler.endElement("", "", "html");
tHandler.endDocument();
writer.close();
请注意,XSLT转换器将使您免除转义>
等特殊字符的负担,因为它需要自己处理它。
很容易将startElement()
和characters()
之类的SAX方法包装成更方便的东西......
值得注意的是,在没有模板和内存中的文档分配(例如DOM)的情况下处理可以让您在结果文档大小方面获得更多自由......