小编Ome*_*192的帖子

将docx批量转换为干净的HTML

我开始怀疑这是否可能.我在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提供的是负责将所有这些标签和额外代码粘贴在那里的东西.我的问题是我对如何做到这一点一无所知.也许还有一个替代版本.我只需要保留表格和文本格式.不需要图像.

html c# docx

15
推荐指数
1
解决办法
1万
查看次数

C#实现Dictionary来计算单词的出现次数,在输出中返回重复的单词

我最近做了一个小应用程序来阅读歌词的文本文件,然后使用字典来计算每个单词出现的次数.但是,出于某种原因,我在输出中找到了同一个单词多次出现并且标记为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 …

c# counter dictionary

3
推荐指数
1
解决办法
5993
查看次数

标签 统计

c# ×2

counter ×1

dictionary ×1

docx ×1

html ×1