标签: openxml

如何使用Apache POI 3.5中的新OOXML支持从DOCX文件中提取纯文本?

2009年9月28日,Apache POI项目发布了3.5版本,正式支持Office 2007中引入的OOXML格式,如DOCX和XLSX.

请提供一个代码示例,用于以纯文本格式提取DOCX文件的内容,忽略任何样式或格式.

我问这个是因为我无法找到任何覆盖新OOXML支持的Apache POI示例.

docx openxml xlsx apache-poi

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

替换OpenXML中的内容控件

我需要一些东西作为占位符.我起初将内容控制视为一种解决方案,但我遇到了一些问题.

然后我考虑将.docx中的CustomXML添加到其中,但由于i4i的诉讼而拒绝了.

然后我决定通过OpenXML SDK 2.0简单地改变内容控制的文本,但即使它如此标记,内容控制也不会消失.我想它不知道文本发生了变化,除非它发生在单词内部.

我或许可以删除CC并放置文本,但我担心它可能带来的格式和样式问题,而且它会违反内容控制的目的.

然后我开始想知道我是否可以定义Word可以识别的自己的占位符.也许通过积木.它不需要做任何事情,除了易于使用OpenXML找到并以某种方式可标记,所以我知道用什么来替换它.我不确定可以用Building Blocks做什么,但我希望它能够做到.

不确定哪种解决方案最适合我,但我需要的是:

a)一些容易放在模板中的东西,也许是预定义的内容控件占位符,你可以放置在你想要的地方并按照你喜欢的样式.

b)添加数据后,删除所有占位符,不再修改.它保持在占位符中定义的样式/格式.

要收回,我需要回答

如何在OpenXML SDK中编辑内容控件,以便在添加文本后删除它们.

-要么-

我可以为Word文档定义自己的自定义OpenXML标记,然后我可以替换它吗?

c# ms-word openxml openxml-sdk word-contentcontrol

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

如何使用c#读取xls和xlsx文件

如何使用带有OpenXML格式的 c#读取xls和xlsx文件而不使用OLEDB连接.我正在寻找Open XML格式程序.

下面是我使用OLEDB预处理的代码.但我正在寻找OpenXML格式.

public static DataTable ConvretExcelToDataTable(string FilePath)
{
    string strConn = string.Empty;

     if (FilePath.Trim().EndsWith(".xlsx"))
     {
         strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", FilePath);
     }
     else if (FilePath.Trim().EndsWith(".xls"))
     {
         strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", FilePath);
     }

    OleDbConnection conn = null;
    OleDbCommand cmd = null;
    OleDbDataAdapter da = null;
    DataTable dt = new DataTable();
    try
    {
        conn = new OleDbConnection(strConn);
        conn.Open();
        cmd = new OleDbCommand(@"SELECT * FROM [Sheet1$]", conn);
        cmd.CommandType = CommandType.Text;
        da = new OleDbDataAdapter(cmd); …
Run Code Online (Sandbox Code Playgroud)

c# xls openxml

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

无法插入OpenXmlElement"newChild",因为它是树的一部分

标题说明了我得到的错误.我试图使用OpenXml 隐藏 word doc中的所有文本.目前,当我尝试追加段落属性时,我收到上述错误.我在网上找不到这个错误.

返回错误的代码

        using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(mDoc_copy, true))
        {
            // Manage namespaces to perform XPath queries.
            NameTable nt = new NameTable();
            XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
            nsManager.AddNamespace("w", wordmlNamespace);

            // Get the document part from the package.
            // Load the XML in the document part into an XmlDocument instance.
            XmlDocument xdoc = new XmlDocument(nt);
            xdoc.Load(wdDoc.MainDocumentPart.GetStream());

            MainDocumentPart main = wdDoc.MainDocumentPart;

            IEnumerable<OpenXmlElement> elem = main.Document.Body.Descendants().ToList();
            Paragraph p;
            ParagraphProperties pp = new ParagraphProperties();
            ParagraphMarkRunProperties prmp = new ParagraphMarkRunProperties();
            Vanish v = …
Run Code Online (Sandbox Code Playgroud)

c# openxml appendchild openxml-sdk

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

Excel 2003 XML格式 - AutoFitWidth无法正常工作

我有一个程序,以Excel 2003 XML格式吐出Excel工作簿.它可以解决一个问题,我无法自动设置列宽.

我制作的片段:

  <Table >
   <Column ss:AutoFitWidth="1" ss:Width="2"/>
   <Row ss:AutoFitHeight="0" ss:Height="14.55">
    <Cell ss:StyleID="s62"><Data ss:Type="String">Database</Data></Cell>
Run Code Online (Sandbox Code Playgroud)

这不会将列设置为自动调整.我试过没有设置宽度,我尝试了很多东西而且我被卡住了.

谢谢.

xml excel openxml

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

OpenXML SDK:使Excel重新计算公式

我通过Microsoft Office OpenXML SDK 2.0更新Excel电子表格的一些单元格.更改值会使包含依赖于已更改单元格的公式的所有单元格无效.但是,由于缓存的值,Excel不会重新计算公式,即使用户单击"立即计算".

通过SDK使整个工作簿的所有依赖单元无效的最佳方法是什么?到目前为止,我在http://cdonner.com/introduction-to-microsofts-open-xml-format-sdk-20-with-a-focus-on-excel-documents.htm找到了以下代码片段:

public static void ClearAllValuesInSheet
      (SpreadsheetDocument spreadSheet, string sheetName)
{
    WorksheetPart worksheetPart =
        GetWorksheetPartByName(spreadSheet, sheetName);

    foreach (Row row in
       worksheetPart.Worksheet.
          GetFirstChild().Elements())
    {
        foreach (Cell cell in row.Elements())
        {
            if (cell.CellFormula != null &&
                  cell.CellValue != null)
            {
                cell.CellValue.Remove();
            }
        }

    }

    worksheetPart.Worksheet.Save();
}
Run Code Online (Sandbox Code Playgroud)

除了这个片段不能为我编译的事实,它有两个限制:

  • 它只会使单张纸无效,但其他纸张可能包含相关配方
  • 它没有考虑任何依赖关系.

我正在寻找一种有效的方法(特别是,只会使依赖于某个单元格值的单元格无效),并考虑所有表格.

更新:

与此同时,我设法编译和运行代码,并删除工作簿的所有工作表上的缓存值.(参见答案.)我仍然对更好/替代解决方案感兴趣,特别是如何只删除实际依赖于更新单元格的单元格的缓存值.

.net excel openxml openxml-sdk

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

如何在C#中从模板创建*.docx文件

我有一个有效的ASP.NET MVC Web应用程序来管理项目和客户.现在我想为一些客户生成一个word文件.在此文件中应显示有关客户的一些数据.每个生成的文件都应具有相同的数据和相同的设计.所以我想用字段来创建一个新的Word模板,并希望以编程方式填充占位符.

我的问题是我找不到明确的方法来做到这一点.有人知道一个好的学习资源吗?

.net c# ms-word docx openxml

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

以OpenXML格式将.NET像素转换为Excel宽度的公式

我花了很多时间尝试使用OpenXML格式确定将.NET像素转换为Excel列宽的公式.我正在使用EPPlus生成xmls文档.我正在尝试确定要自动调整大小的列的宽度.我通过测量字符串然后尝试将其转换为OpenXML的列宽来获取像素数,这是用我认为的字符来衡量的.

我已经阅读了微软关于如何转换它的文档,并尝试了他们建议的公式,但它甚至不准确:

http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.column.aspx

这是我的代码使用他们的公式:

    public double GetCharacterWidth(string Text, Font f, Graphics g)
    {
        float MaxDigitWidth = g.MeasureString("0", f).Width;
        float Pixels = g.MeasureString(Text, f).Width;

        return ((Pixels - 5) / MaxDigitWidth * 100 + 0.5) / 100;
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# openxml

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

OpenXML多表格

我正在为excel工作簿添加多个工作表.我希望在一张纸上有一行而在另一张纸上有另一行.此代码将两行放在两个工作表上.有想法该怎么解决这个吗?

        SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(saveFile, SpreadsheetDocumentType.Workbook);

        // Add a WorkbookPart to the document
        WorkbookPart workbookPart = ssDoc.AddWorkbookPart();
        workbookPart.Workbook = new Workbook();
        // Add a WorksheetPart to theWorkbookPart
        WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
        worksheetPart.Worksheet = new Worksheet(new SheetData());

        Sheets sheets = ssDoc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());

        Sheet sheet1 = new Sheet()
        {   Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart),
            SheetId = 1, Name = "Sheet1"
        };

        Sheet sheet2 = new Sheet()
        {
            Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart),
            SheetId = 2, Name = "Sheet2"
        };

        sheets.Append(sheet1);
        sheets.Append(sheet2);
        Worksheet worksheet = new Worksheet(); …
Run Code Online (Sandbox Code Playgroud)

c# openxml

12
推荐指数
3
解决办法
2万
查看次数

是否有一个开源XSLT将WPF FlowDocument转换为WordML?

我想使用WPF RichTextBox,它允许用户编辑和格式化文本.这种格式化的文本最终将与我们的一些其他自定义XML数据一起进入Word文档.

我发现了几个从WordML到FlowDocument的例子,但没有将RichTextBox FlowDocument转换为WordML的例子.

而不是重新发明轮子,是否有一个开源XSLT文件,我可以用来将WPF FlowDocument转换为WordML?

我不是在寻找100%的解决方案(例如桌子,数字,图纸等).此时,我只对保留字体格式,段落,项目符号列表等感兴趣.

编辑:

如果可能的话,我需要避免使用Word Interop或昂贵的第三方工具(例如Apose).我正在寻找一种优雅的方式将一些基本的FlowDocument XML格式的内容翻译成OpenXML,最好是通过XSLT.由于我对嵌入式图片等项目不感兴趣,我认为这可能是可行的,因为我发现了另一个方向的例子(即OpenXML/WordML到XAML Flowdocument)

c# xslt wpf openxml wordml

12
推荐指数
1
解决办法
1873
查看次数

标签 统计

openxml ×10

c# ×7

openxml-sdk ×3

.net ×2

docx ×2

excel ×2

ms-word ×2

apache-poi ×1

appendchild ×1

word-contentcontrol ×1

wordml ×1

wpf ×1

xls ×1

xlsx ×1

xml ×1

xslt ×1