我开始怀疑这是否可能.我在Google上搜索了一些解决方案,并且没有提供任何与我喜欢的完全无关的方法.
我认为解释这需要什么是有益的.我在我大学的IT部门为数据库小组工作.我的主要工作是在docx文件中获取报告的规范,将其复制到Dreamweaver,修复一些格式,并将其放到他们的网站上.我的问题是一遍又一遍地做这件事是非常乏味的.我想,嘿,我现在还没有在C#中编写任何东西,也许我可以编写一个应用程序来获取docx文件,将其转换为HTML,修复CSS,粘贴页眉和页脚从那里的网页,并保存结果.我原本打算让它一个接一个地做,但是输入文件列表和批量转换可能并不困难.
我已经找到了关于如何实现这一目标的相关主题,但它们并不能很好地满足我的需求.
http://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190
对于一些文档来说这可能很好,但由于它只是自动化Word的一个实例,我觉得它很慢并且内存密集.我宁愿避免打开和关闭Word 50+的实例.
http://openxmldeveloper.org/articles/333.aspx
这就是我开始使用的.XSLT的好处是不需要为每个文件安装或运行单词.经过一番搜索,我得到了一个概念验证工作.它接收一个docx文件,对其进行解压缩,从中获取document.xml,并使用我从OpenXML查看器中清除的DocX2Html.xsl文件.我相信这最初由MS提供给sharepoint服务器,以提供在浏览器中呈现word文档的能力.或类似的规定.
在调整了代码以满足我的需求,并且遇到了objXSLT.Load()方法的问题之后,我最终使用IlMerge将XSL变成了DLL.不知道为什么我在使用普通的旧XSL文件时仍然遇到编译错误,但DLL工作正常,所以我很满意.这里(http://pastebin.com/a5HBAakJ)是我目前的代码.它可以很好地将docx转换为HTML(除了某些单词之间的随机空格),但结果文件的HTML语法非常难看.这里可以找到这种怪物的一个例子(http://pastebin.com/b8sPGmFE).
有谁知道我怎么能补救这个?我想也许我需要制作一个新的XSL文件,因为MS提供的是负责将所有这些标签和额外代码粘贴在那里的东西.我的问题是我对如何做到这一点一无所知.也许还有一个替代版本.我只需要保留表格和文本格式.不需要图像.
我最近做了一个小应用程序来阅读歌词的文本文件,然后使用字典来计算每个单词出现的次数.但是,出于某种原因,我在输出中找到了同一个单词多次出现并且标记为1的实例,而不是添加到单词的原始标记上.我正在使用的代码如下:
StreamReader input = new StreamReader(path);
String[] contents = input.ReadToEnd()
.ToLower()
.Replace(",","")
.Replace("(","")
.Replace(")", "")
.Replace(".","")
.Split(' ');
input.Close();
var dict = new Dictionary<string, int>();
foreach (String word in contents)
{
if (dict.ContainsKey(word))
{
dict[word]++;
}else{
dict[word] = 1;
}
}
var ordered = from k in dict.Keys
orderby dict[k] descending
select k;
using (StreamWriter output = new StreamWriter("output.txt"))
{
foreach (String k in ordered)
{
output.WriteLine(String.Format("{0}: {1}", k, dict[k]));
}
output.Close();
timer.Stop();
}
Run Code Online (Sandbox Code Playgroud)
我输入的文本文件在这里:http://pastebin.com/xZBHkjGt(这是前15首说唱歌曲的歌词,如果你很好奇的话)输出可以在这里找到:http …