我正在尝试为我的老板在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,也从未在以前添加对项目的引用。任何建议或意见都表示赞赏。
答案 0 :(得分:3)
尽管这个暧昧的问题,显然它来自我的bizzaro邪恶双胞胎(nwonknu)(elgoog),开玩笑吧。
无论如何,我已经说过了before,我会再说一遍 的XML / OpenXML建议来源{{3} }。他是一个非常活跃的博客,看起来像是4年多的一致的帖子(sux当好的消息来源有时消失),无论如何轻松浏览他的博客几分钟,我相信你对OpenXML + Linq 2 XML的掌握会有点更坚实。