在我们旧的基于MSWord-97的系统中,我们使用COM与.doc文件交互,并嵌入OLE对象,因此嵌入的文档在父级中可见(而不是图标).
我们用一个使用OpenXML SDK的系统取而代之,因为它需要在我们的服务器上安装Word,它会生成.docx文件.但是我们仍然需要将RTF文件的内容嵌入到生成的DOCX中...具体来说,我们用文件的内容替换书签.
我在网上找到了一些例子,但它们都有所不同.当我在Word中创建一个简单的示例并查看XML时,有很多东西可以定位/显示嵌入对象的可视化表示,而嵌入本身似乎并不太可怕.最简单的方法是什么?
当我尝试使用DocumentFormat.OpenXml dll读取.doc文件时,它给出的错误为"文件包含损坏的数据".
这个DLL正在正确读取.docx文件.
DocumentFormat.OpenXml dll可以帮助读取.doc文件吗?
string path = @"D:\Data\Test.doc";
string searchKeyWord = @"java";
private bool SearchWordIsMatched(string path, string searchKeyWord)
{
try
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(path, true))
{
var text = wordDoc.MainDocumentPart.Document.InnerText;
if (text.Contains(searchKeyWord))
return true;
else
return false;
}
}
catch (Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud) 这个问题看似相当基本,但如何在c#中使用OpenXML在幻灯片中插入形状(即矩形)?
我四处搜索,我看到的只是"创建一个带有形状的幻灯片,并使用SDK生产力工具来反映代码.这不是真的有用:(
我正在使用内容控件和OpenXML SDK实现ms word文档生成.我想对该代码进行一些自动化测试(单元测试或一些简单的UI自动化测试).
有没有人有测试MS Word文档生成的经验?有哪些可能的选择?
提前致谢!
我创建了一个Word模板,然后通过OpenXML SDK处理该模板,用数据库查询中的数据替换文档的某些内容.
该模板由一些基本文本组成,其中纯文本内容控件注入了我想要替换文本的位置.然后我使用这些控件中的文本作为查找替换值的键.在大多数情况下,这工作正常(我只是更新Text对象的Text属性).
在一种情况下,我用表替换文本.在这种情况下,我在代码中构建一个表,然后用新的Table对象替换SdtContentRun对象的内容(Run对象的父对象,后者又是Text对象的父对象)...
var sdtContentRunElements =
from sdtContentRun in this.Document.MainDocumentPart.RootElement.Descendants<SdtContentRun>()
select sdtContentRun;
sdtContentRunElements.ForEach(sdtContentRunElement => {
Run firstRunElement = sdtContentRunElement.Descendants<Run>().FirstOrDefault();
if (firstRunElement != null) {
Text firstTextElement = firstRunElement.Descendants<Text>().FirstOrDefault();
if (firstTextElement != null) {
switch (firstTextElement.Text) {
case TableBookmark:
Table advisoryTable = new Table(...); // See below
OpenXmlElement parent = firstRunElement.Parent;
parent.RemoveAllChildren();
parent.Append(advisoryTable);
break;
case ContractorItemAdvisoriesLetter.ContractorCodeBookmark:
firstTextElement.Text = @"New text";
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
这导致以下XML(取自用于Microsoft Office的Open XML SDK 2.0生产力工具)...
<w:sdtContent xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:tbl>
<w:tr>
<w:tc>
<w:p>
<w:r>
<w:t>Lorem ipsum …
Run Code Online (Sandbox Code Playgroud) 使用SDK我正在构建包含报告的Word文档.这些文件需要有TOC.有没有人有一个完整的解决方案,我可以遵循,以了解如何做到这一点?
(我已经阅读了http://openxmldeveloper.org/上的所有内容)
我正在创建一个示例处理程序来生成简单的Word文档.
本文档将包含文本Hello world
这是我使用的代码(C#.NET 3.5),
我创建了Word文档,但没有文本,大小为0.
我该如何修复它?
(我使用CopyStream方法,因为CopyTo仅在.NET 4.0及更高版本中可用.)
public class HandlerCreateDocx : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
using (MemoryStream mem = new MemoryStream())
{
// Create Document
using (WordprocessingDocument wordDocument =
WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document, true))
{
// Add a main document part.
MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
// Create the document structure and add some text.
mainPart.Document = new Document();
Body body = mainPart.Document.AppendChild(new Body());
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new …
Run Code Online (Sandbox Code Playgroud) 我是OpenXML的新手(2.5版),我可以创建行和单元格,但我需要能够设置列宽,但由于某种原因我无法正确执行.
没有这个代码:
Columns cols = new Columns();
Column c1 = new Column()
{
CustomWidth = true,
Width = 20
};
cols.Append(c1);
wspart.Worksheet.Append(cols);
Run Code Online (Sandbox Code Playgroud)
该程序运行并生成一个excel文件.
下面的代码符合并运行,但留下了一个损坏的Excel文档.当我尝试添加列时,我做错了什么?
public static void createExcel() //TODO change to private
{
//create the spreadsheet document with openxml See https://msdn.microsoft.com/en-us/library/office/ff478153.aspx
SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Create(@"C:\Users\Reid\Documents\BLA\test.xlsx", SpreadsheetDocumentType.Workbook); //TODO change path
//add a workbook part
WorkbookPart wbpart = spreadsheetDoc.AddWorkbookPart();
wbpart.Workbook = new Workbook();
//add a worksheet part
WorksheetPart wspart = wbpart.AddNewPart<WorksheetPart>();
Worksheet ws = new Worksheet(new SheetData());
wspart.Worksheet = ws;
//create a …
Run Code Online (Sandbox Code Playgroud) 我有一个基本的C#应用程序,其中使用了Open XML SDK.我想让它在我的Nginx和Ubuntu和DigitalOcean服务器上运行.
该应用程序在Windows中编译并运行良好,而我的Mac在单声道中运行良好.然后,我在Ubuntu服务器上安装了mono,并将.exe文件scp到服务器,然后运行mono ConsoleApplication2.exe
,它返回了以下错误:
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
File name: 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at ConsoleApplication2.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
File name: 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at ConsoleApplication2.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)
我找到了这个链接,似乎问题来自于版本DocumentFormat.OpenXml
.但是我怎么能在Ubuntu服务器上安装正确的版本呢? …