【问题标题】:Creating an Open XML file in .NET - schema在 .NET 中创建 Open XML 文件 - 架构
【发布时间】:2010-10-29 23:31:16
【问题描述】:

我正在尝试在 C# 应用程序中为我的老板制作一个报告生成器,我遇到了这个页面并查看了 RichTextBoxes,并认为我可以在这个想法的基础上做我老板正在寻找的事情。 http://openxmldeveloper.org/articles/OpenXMLDocFromDotNet.aspx

我遇到的问题是他们的 XML 部分示例代码,假设您在 Office 2007 测试版中创建应用程序。此处列出的架构不适用于零售 Office 2007。谁能告诉我在哪里可以找到有关架构的更多信息,或者解释代码在此处执行的操作?或者,如果有人对基于富文本框的内容创建 .docx 文件有不同的建议,我们将不胜感激。我发现了提供类似建议的不同资源:http://nishantrana.wordpress.com/2007/11/03/creating-word-document-using-c/

但我一直无法让它识别 WordApp 是什么。

这是第一个链接中存在架构问题的代码。

private void GenerateDocument_Click(object sender, EventArgs e)
{
    string _nameSpaceURI = "http://schemas.microsoft.com/office/word/2005/10/wordml";
    string docFileName = GetSavePath();

    //-- Step 1 - Creating the document xml
    XmlDocument doc = new XmlDocument();
    XmlElement _wWordDoc = doc.CreateElement("w:wordDocument", _nameSpaceURI);
    doc.AppendChild (_wWordDoc);
    XmlElement _wbody = doc.CreateElement("w:body",_nameSpaceURI);
    _wWordDoc.AppendChild(_wbody);
    // Check if the string contains a line feed
    string[] _SplitStr = mleTextForDocument.Text.Split('\n');
    // if it contains line feed then each entry with a line feed goes to a new paragraph.
    for (int row = 0; row < _SplitStr.Length; row++)
    {
         XmlElement _wp1 = doc.CreateElement("w:p",_nameSpaceURI);
         _wbody.AppendChild(_wp1);
         XmlElement _wr1 = doc.CreateElement("w:r", _nameSpaceURI);
         _wp1.AppendChild(_wr1);
         XmlElement _wt11 = doc.CreateElement("w:t", _nameSpaceURI);
         _wr1.AppendChild(_wt11);
         XmlNode _wt1 = doc.CreateNode(XmlNodeType.Text, "w:t",_nameSpaceURI);
         _wt1.Value = _SplitStr[row];
         _wt11.AppendChild(_wt1);
    }

    //-- Step 2 - Creating the Package
    Package package = null;
    package = Package.Open(docFileName, FileMode.Create, FileAccess.ReadWrite);

    //-- Step 3 - Create the main document part (document.xml)
    Uri uri = new Uri("/word/document.xml", UriKind.Relative);
    PackagePart part = package.CreatePart(uri, "application/vnd.ms-word.main+xml");
    StreamWriter partWrt = new StreamWriter(part.GetStream(FileMode.Create, FileAccess.Write));
    doc.Save(partWrt);
    partWrt.Close();
    package.Flush();

    //-- Step 4 - Create the relationship file
    uri = new Uri("/word/document.xml", UriKind.Relative);
    PackageRelationship rel = package.CreateRelationship(uri, TargetMode.Internal, "http://schemas.microsoft.com/office/2006/relationships/officeDocument", "rId1");
    package.Flush();

    //-- Step 5- Close the document.
    package.Close();
 }

很抱歉没有明确的问题,但我真的不知道该问什么问题。我以前从未使用过模式,从未使用过 XML,也从未向我的项目添加引用。任何意见或建议表示赞赏。

【问题讨论】:

  • 是否必须另存为.docx?直接 .rtf 会满足项目的需求吗?甚至是一个简单的文本文件?
  • 某种 word 文档是必要的,应用程序将创建涉及某些数据的图表,我将在应用程序的 RichTextBox 中插入这些数据

标签: c# xml visual-studio-2005 schema


【解决方案1】:

忽略这个模棱两可的问题,显然它来自我的 bizzaro 邪恶双胞胎 (nwonknu) (elgoog),开玩笑吧。

无论如何,我已经说过了before,我会再说一遍质量 XML/OpenXML 建议的来源是Eric White。他是一个非常活跃的博主,看起来 4 年多以来一直在发帖(有时好的资源会消失),无论如何,他的博客轻而易举地浏览了几分钟,我相信你对 OpenXML + Linq 2 XML 的掌握会有点更扎实。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多