标签: openxml

如何使用OpenXml SDK 2.0更改Word 2007中的内容控件的内容?

即将生气这个问题.我确信这很简单,我只是错过了它,但我不能为我的生活找到如何使用C#中的OpenXml SDK v2.0更改Word 2007中的内容控件的内容.

我创建了一个带有纯文本内容控件的Word文档.此控件的标记是"FirstName".在代码中,我想打开Word文档,找到此内容控件,并更改内容而不会丢失格式.

我最终开始工作的解决方案包括找到内容控件,在其后面插入一个run,然后删除内容控件:

using (WordprocessingDocument wordProcessingDocument = WordprocessingDocument.Open(filePath, true)) {
MainDocumentPart mainDocumentPart = wordProcessingDocument.MainDocumentPart;
SdtRun sdtRun = mainDocumentPart.Document.Descendants<SdtRun>()
 .Where(run => run.SdtProperties.GetFirstChild<Tag>().Val == "FirstName").Single();

if (sdtRun != null) {
 sdtRun.Parent.InsertAfter(new Run(new Text("John")), sdtRun);
 sdtRun.Remove();
}
Run Code Online (Sandbox Code Playgroud)

这确实改变了文本,但我丢失了所有格式.有谁知道我怎么做到这一点?

word-2007 openxml

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

OpenXml电子表格.值过滤器,样式和unicode字符

由于文档很少,我在C#中遇到OpenXml SpreadSheetDocument问题.

  1. 如何使用过滤器制作顶行?
  2. 如何使颜色交替?
  3. 我想在我的SheetData中放入unicode字符,但是当我选择excel时它会给我一个错误..
  4. 更改顶行颜色.你能说是否有一些正确的方法可以做到这一点,比msdn上提供的更多文档,或者发布一些StyleSheet代码?对不起我的英语不好.谢谢.

.net c# openxml c#-4.0

7
推荐指数
1
解决办法
2355
查看次数

Word 2007,Open XML - 嵌入图像

你知道什么基本信息必须<w:p/>在*.docx文档中的document.xml中包含一个段落(),它指定一个图像吗?我知道必须有:

<a:blip r:embed="rId4" /> 
Run Code Online (Sandbox Code Playgroud)

指定关系id,但还有什么?很难在Google中找到它并尝试从现成文档中删除标签或阅读规范需要花费大量时间.

将非常感谢所有必需标签的示例.

openxml wordprocessingml drawingml

6
推荐指数
1
解决办法
5805
查看次数

如何将Excel OpenXML共享字符串转换为内联字符串?

我有一个Excel 2007 OpenXML格式的大型电子表格,我想以编程方式在xml中操作.Excel使用共享字符串方法保存它,虽然效率更高,但会使过程复杂化.有没有人知道Excel中是否有一个选项可以使用内联字符串进行保存,或者是否已经构建了一个实用程序来将所有字符串重新放回到sheet.xml中?没有太多的运气谷歌搜索,我宁愿使用现有的解决方案,而不是建立我自己的转换器,如果可能的话.谢谢.

xml excel openxml

6
推荐指数
1
解决办法
6485
查看次数

在OpenXml-SDK中使用TDD

我已经开始使用TDD方法开发一个从Excel文件中读取数据的小应用程序.使用存储库模式类型的方法,我遇到了困扰我的障碍.

为了读取Excel文件,我使用的是OpenXml-SDK.现在通常使用SDK从Excel文件中读取需要几个(如果不是更多)步骤来实际获取您想要读取的值.

到目前为止,我所采用的方法反映在以下测试和附带功能中.

    [Test]
    public void GetRateData_ShouldReturn_SpreadSheetDocument()
    {
        //Arrange
        var fpBuilder = new Mock<IDirectoryBuilder>();
        fpBuilder.Setup(fp => fp.FullPath()).Returns(It.IsAny<string>());

        var doc = new Mock<IOpenXmlUtilities>();
        doc.Setup(d => d.OpenReadOnlySpreadSheet(It.IsAny<string>()))
             .Returns(Mock.Of<SpreadsheetDocument>());

        swapData = new SwapRatesRepository(fpBuilder.Object, doc.Object);

        //Act
        var result = swapData.GetRateData();

        //Assert
        doc.Verify();
        fpBuilder.Verify();
    }

public class SwapRatesRepository: IRatesRepository<SwapRates>
{
    private const string SWAP_DATA_FILENAME = "DATE_MKT_ZAR_SWAPFRA1.xlsx";
    private IDirectoryBuilder builder;
    private IOpenXmlUtilities openUtils;

    public SwapRatesRepository(IDirectoryBuilder builder)
    {
        // TODO: Complete member initialization
        this.builder = builder;
    }

    public SwapRatesRepository(IDirectoryBuilder builder, 
                                       IOpenXmlUtilities openUtils)
    {
        // TODO: Complete member …
Run Code Online (Sandbox Code Playgroud)

c# tdd unit-testing openxml openxml-sdk

6
推荐指数
1
解决办法
866
查看次数

将XML数据存储在Excel文件中的最佳方法是什么?

我正在寻找一种将XML数据存储在Excel文件中的方法.数据应该完全隐藏给用户,它不应该在单元格或注释中,甚至是隐藏的.此外,应在用户打开时保留数据,然后使用Excel保存文件.我不是在寻找一种将单元格映射到外部XML数据的方法.XML数据应该在xlsx文件中.

数据将使用C#工具输入,而不是Excel本身.

c# xml excel openxml

6
推荐指数
3
解决办法
6786
查看次数

在Powerpoint幻灯片中更改文本框中的文本

我有一个包含3张幻灯片的Powerpoint演示文稿.每张幻灯片都有一个文本框,它是一个占位符.我想替换一张幻灯片上的文本框内容.

我需要知道如何使用C#和OpenXML来做到这一点

万分感谢

openxml presentationml

6
推荐指数
1
解决办法
2723
查看次数

如何在OpenXML中从名称或工作表ID中获取Worksheetpart?

以下创建了一个XLSX,添加了两个包含一些数据的工作表.然后,我希望以后能够根据名称(或最好是id)获取电子表格,以便我可以在以后添加/修改工作表.我仍然坚持如何在下面的代码不完整的地方再次获取工作表.

    Sub Main()

    Using doc As SpreadsheetDocument = SpreadsheetDocument.Create(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "c:\temp\fubar.xlsx"), SpreadsheetDocumentType.Workbook)
        Dim currSheet As WorksheetPart

        ' create the workbook
        doc.AddWorkbookPart()
        doc.WorkbookPart.Workbook = New Workbook()
        doc.WorkbookPart.Workbook.AppendChild(New Sheets())

        currSheet = InsertWorksheet(doc.WorkbookPart, "First")
        currSheet.Worksheet.First().AppendChild(New Row())
        currSheet.Worksheet.First().First().AppendChild(New Cell() With { _
         .CellValue = New CellValue("1") _
        })

        currSheet = InsertWorksheet(doc.WorkbookPart, "Second")
        currSheet.Worksheet.First().AppendChild(New Row())
        currSheet.Worksheet.First().First().AppendChild(New Cell() With { _
         .CellValue = New CellValue("1") _
        })

        For Each s As Sheet In doc.WorkbookPart.Workbook.Sheets
            System.Diagnostics.Debug.WriteLine(s.Id)
            System.Diagnostics.Debug.WriteLine(s.SheetId)
        Next

        cursheet = ... 'Get worksheetpart with name "First"

        cursheet = …
Run Code Online (Sandbox Code Playgroud)

vb.net openxml openxml-sdk

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

OpenXml"仅在生产时无法访问封闭流"

生产环境:Server 2008 R2,作为网络服务运行的应用程序池.我在特定的生产线上遇到了这个问题,我无法理解为什么它会失败.

使用堆栈跟踪记录:

2015-02-03 11:19:29,389,DEBUG,44,Before Test1
2015-02-03 11:19:29,389,DEBUG,44,Before Test2
2015-02-03 11:19:29,451,DEBUG,44,Before Getting Row
2015-02-03 11:19:29,451,DEBUG,44,After Getting Row
2015-02-03 11:19:29,826,DEBUG,44,Before Test1
2015-02-03 11:19:29,841,DEBUG,44,Before Test2
2015-02-03 11:19:29,841,DEBUG,44,Before Getting Row
2015-02-03 11:19:29,841,DEBUG,44,After Getting Row
2015-02-03 11:19:30,044,DEBUG,44,Before Test1
2015-02-03 11:19:30,060,DEBUG,44,Before Test2
2015-02-03 11:19:30,075,DEBUG,44,Before Getting Row
2015-02-03 11:19:30,075,DEBUG,44,After Getting Row
2015-02-03 11:19:30,138,DEBUG,44,Before Test1
2015-02-03 11:19:30,138,DEBUG,44,Before Test2
2015-02-03 11:19:30,356,DEBUG,44,Before Getting Row
2015-02-03 11:19:30,356,DEBUG,44,After Getting Row
2015-02-03 11:19:31,058,DEBUG,44,Before Test1
2015-02-03 11:19:31,074,DEBUG,44,Before Test2
2015-02-03 11:19:31,245,DEBUG,44,Before Getting Row
2015-02-03 11:19:31,245,DEBUG,44,After Getting Row
2015-02-03 11:19:31,729,DEBUG,44,Before Test1
2015-02-03 11:19:31,729,DEBUG,44,Before Test2 …
Run Code Online (Sandbox Code Playgroud)

c# asp.net openxml

6
推荐指数
1
解决办法
1209
查看次数

如何解决这个子弹问题

在我的网站上,admin上传了一个.docx文件.我将文件转换为xml 使用OpenXmlPowerToolsApi.

问题是该文件中有一些子弹.

•这是我在文件中的子弹1.
•这是我在文件中的子弹2.

XElement html = OpenXmlPowerTools.HtmlConverter.ConvertToHtml(wDoc, settings);
var htmlString = html.ToString();
File.WriteAllText(destFileName.FullName, htmlString, Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

现在,当我打开xml文件时,它会将子弹渲染如下: -

XML渲染

我需要读取XML的每个节点并保存在数据库中并从节点重新构建html.

请不要问我为什么这样,因为我不是系统的老板.

如何在xml中正确渲染项目符号,以便我可以在数据库中保存正确的html?

c# asp.net openxml xml-parsing

6
推荐指数
1
解决办法
338
查看次数