标签: openxml

词 OpenXML 。在书签之间遍历 OpenXmlElements

我需要遍历书签开始和书签结束标记之间的节点。问题似乎分解为树遍历,但我无法确定正确的算法。书签开始和结束元素是非复合节点(没有子节点)并且可能出现在树中的任意深度。书签开始也不能保证在相同的深度。

如果您为文档绘制树结构,我想检查开始和结束书签之间的所有节点。我认为一种遍历从节点 x 开始到节点 y 结束的不平衡树的算法是可行的。这听起来可行还是我遗漏了什么。

如果这是可行的,你能指出我可以完成返回节点的树遍历的方向吗?

c# openxml openxml-sdk

5
推荐指数
1
解决办法
4060
查看次数

.NET OpenXML SDK 2 RunProperties 为 Null

我正在尝试阅读 Word 2007 docx 文档。

该文档在 Word 中看起来不错,但是当我尝试使用我的代码读取 id 时,所有 Run 对象都将 RunProperites 设置为 null。

我最感兴趣的属性是 RunProperies.FontSize,但不幸的是它也是 null,我可以访问的唯一属性是 InnerText。

我的代码如下所示:

using (WordprocessingDocument doc = WordprocessingDocument.Open(filename, true))
{
    MainDocumentPart mainPart = doc.MainDocumentPart;
    IList<Paragraph> paragraphList = doc.MainDocumentPart.Document.Body.Elements<Paragraph>().ToList<Paragraph>();

    foreach (Paragraph pr in paragraphList)
    {   
        IList<Run> runList = pr.Elements<Run>().ToList<Run>();
        foreach (Run r in runList)
        {
            // Some logic
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经将我的文档最小化到尽可能简单,它看起来像这样http://dl.dropbox.com/u/204110/test.docx

我有类似的文件,可以很好地阅读。OpenXML SDK 2 中是否可能存在错误?

有没有人遇到过类似的问题?任何帮助将不胜感激。谢谢你!

.net word-2007 docx openxml openxml-sdk

5
推荐指数
1
解决办法
826
查看次数

OpenXML:用 WordprocessingML 中的表格替换 &lt;sdt/&gt; 元素

我正在使用 OpenXML SDK 以编程方式用<w:sdt/>OpenXML (WordProcessingML) 标记块替换一些元素。

例如,我有一个包含以下内容的段落:

<w:p>
  <w:run><w:text> Text before </w:text></w:run>
  <w:sdt><w:sdtPr> ...</w:sdtPr><w:sdtContent>...</w:sdtContent></w:sdt>
  <w:run><w:text> Text after </w:text></w:run>
</w:p>
Run Code Online (Sandbox Code Playgroud)

还有一个结构如下的表:

<w:tbl>
  <w:tblPr>...</w:tblPr>
  <w:tblGrid> ... gridCol elements ...</w:tblGrid>
  <w:tr>
    <w:trPr>...</w:trPr>
    <w:tc>
   <w:tcPr>...</w:tcPr>
   <w:p> Cell contents </w:p>
    </w:tc>
    <w:tc>
   <w:tcPr>...</w:tcPr>
   <w:p> Cell contents </w:p>
    </w:tc>
  </w:tr>
 </w:tbl>
Run Code Online (Sandbox Code Playgroud)

基本上我想<w:sdt/>用表格标记替换段落中的元素。问题是我不能只是替换它,因为它会创建一个无效的文档(另一个段落元素中包含段落的表格无效)。

我想要得到的结果是这样的:

<w:p>
  <w:run><w:text> Text before </w:text></w:run>
</w:p>
<w:tbl>
  <w:tblPr>...</w:tblPr>
  <w:tblGrid> ... gridCol elements ...</w:tblGrid>
  <w:tr>
    <w:trPr>...</w:trPr>
    <w:tc>
   <w:tcPr>...</w:tcPr>
   <w:p> Cell contents </w:p>
    </w:tc>
    <w:tc>
   <w:tcPr>...</w:tcPr>
   <w:p> Cell contents </w:p>
    </w:tc> …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

5
推荐指数
1
解决办法
4431
查看次数

使用OpenXml创建Excel文件后复制/粘贴

我正在使用OpenXml生成excel文件,在游过大量不同的示例代码和SDK Productivity Tool之后,终于设法得到了我想要的东西.只有一件事我无法解决.当我使用Excel打开文件并尝试将单元格复制/粘贴到另一个Excel文件时,我得到"该命令不能用于多个选择".它绝对不是一个非相邻的选择问题,因为即使只有一个单元格也无法做到.此外,如果我用Excel保存我的文件并重新打开它,问题就会消失,所以我认为它可能与我创建文件的方式有关.任何建议,将不胜感激.这是我用来生成文件的代码:

public class ExcelGenerator
{
    #region Fields

    private List<Tuple<DbDataReader, string>> datasource;
    private string[] cellReferences = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
    private SpreadsheetDocument workbook;
    Hashtable stringItemIndexMap;
    int nextIndex;

    private uint numberStyleID;
    private uint decimalStyleID;
    private uint textStyleID;
    private uint headerTextStyleID;

    #endregion

    #region Constructors

    public ExcelGenerator(DbDataReader reader, string sheetName) : this(new List<Tuple<DbDataReader, string>>() { new …
Run Code Online (Sandbox Code Playgroud)

openxml

5
推荐指数
1
解决办法
2630
查看次数

将WordprocessingMLPackage保存到ByteArrayInputStream

如何将org.docx4j.openpackaging.packages.WordprocessingMLPackage实例保存到ByteArrayInputStream中,然后可以从服务器下载.

谢谢.

java docx openxml docx4j

5
推荐指数
1
解决办法
5445
查看次数

默认的WordML单位测量?像素或点或英寸

请澄清我的疑问
WordML/DOCX默认单位测量是像素或点或EMU或英寸..?

xml docx openxml wordml

5
推荐指数
2
解决办法
2210
查看次数

如何使用OpenXML使Excel工作表标题行变为粗体

我正在使用openXMLAsp.net和c#创建一个Excel workbook,我要求使所有工作表的抬头行都应为粗体。

WorkbookStylesPart stylesPart = workbookpart.AddNewPart<WorkbookStylesPart>();
        stylesPart.Stylesheet = CreateStylesheet();
        stylesPart.Stylesheet.Save();

    }
    private static Stylesheet CreateStylesheet()
    {
        Stylesheet ss = new Stylesheet();
        Fonts fts = new Fonts();
        DocumentFormat.OpenXml.Spreadsheet.Font ft = new DocumentFormat.OpenXml.Spreadsheet.Font();
        Bold fbld = new Bold();
        FontName ftn = new FontName();
        ftn.Val = "Calibri";
        DocumentFormat.OpenXml.Spreadsheet.FontSize ftsz = new DocumentFormat.OpenXml.Spreadsheet.FontSize();
        ftsz.Val = 11;
        ft.FontName = ftn;
        ft.FontSize = ftsz;
        ft.Bold = fbld;
        fts.Append(ft);
        fts.Count = (uint)fts.ChildElements.Count;
        ss.Append(fts);
        return ss;
    }
Run Code Online (Sandbox Code Playgroud)

它正在制作所有单元格bold,我缺少将其应用于特定单元格的代码row/cells

在此先感谢,AR

c# asp.net openxml

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

将Office Open XML(OOXML)文件作为blob插入MySQL

我有很多使用扩展XML保存的Office Open XML(OOXML)文件,我试图将这些文件插入到MySQL数据库中.我可以连接好,我已经能够使用相同的语法将字符串插入到不同的数据库中.但是当我尝试将XML文件插入数据库中的blob字段时,它告诉我我的语法有问题.由于文件的格式,我应该做些什么特别的事吗?

public Insertion(Connection conn) throws SQLException, FileNotFoundException{

    System.out.println("Trying to insert Data..");

    String filePath1 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML";
    InputStream inputStream1 = new FileInputStream(new File(filePath1));
    String filePath2 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML";
    InputStream inputStream2 = new FileInputStream(new File(filePath2));
    String filePath3 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML";
    InputStream inputStream3 = new FileInputStream(new File(filePath3));

    System.out.println("It did this part");

    String SQL = "INSERT INTO (1,2,3) values(?,?,?)";
    PreparedStatement statement = conn.prepareStatement(SQL);


    statement.setBlob(1, inputStream1);
    statement.setBlob(2, inputStream2);
    statement.setBlob(3, inputStream3);
    statement.executeUpdate();


    System.out.println("Data inserted.");
    conn.close();
    System.out.println("Connection Closed");
    System.out.println("Have a Nice Day and Goodbye.");
    }


}
Run Code Online (Sandbox Code Playgroud)

这是错误:

"线程中的异常"主" …

xml mysql sql blob openxml

5
推荐指数
1
解决办法
170
查看次数

合并单元格上的OpenXML SDK边框仅应用于第一个单元格

使用OpenXML SDK将边框应用于合并的单元格区域时,边框仅显示合并范围中的第一个(左上角)单元格.我完全不知道,这让我发疯.使用生产力工具,我找不到任何有意义的差异,我有什么和预期的工作.这是我为样式表生成的XML:

    <x:borders count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
      <x:border>
        <x:left />
        <x:right />
        <x:top />
        <x:bottom />
        <x:diagonal />
      </x:border>
      <x:border>
        <x:left />
        <x:right />
        <x:top />
        <x:bottom style="thick">
          <x:color auto="1" />
        </x:bottom>
        <x:diagonal />
      </x:border>
    </x:borders>
    <x:cellXfs xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
      <x:xf fontId="0" />
      <x:xf fontId="1" fillId="2" applyFont="1" applyFill="1" />
      <x:xf borderId="1" applyBorder="1" />
    </x:cellXfs>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切,在边界之前,之后等应用合并.

c# excel openxml openxml-sdk

5
推荐指数
1
解决办法
1349
查看次数

指定的软件包无效。主要部分缺失

下面给出了一个合并功能,该功能旨在合并文件夹中的所有docx文件并生成合并的文件。

public  void Merge()
{  
    try
    {

        string sid = Request.QueryString["studid"];
        string stud = sid.ToString();

        string ds = HttpContext.Current.Server.MapPath(("~\\StudentBinder") + "\\Temp4\\");
        if (Directory.Exists(ds))
        {
            DirectoryInfo d = new DirectoryInfo(ds);
            FileInfo[] Files = d.GetFiles("*" + stud + "*.docx");

              // stud added for differentiating b/w users

            string[] filepaths = new string[Files.Length];
            int index = 0;

            foreach (FileInfo file in Files)
            {
                filepaths[index] = file.Name;
                index++;
            }


                using (WordprocessingDocument myDoc = WordprocessingDocument.Open(Server.MapPath(filepaths[0]), true))

                {
                    for (int i = 1; i < filepaths.Length; i++) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net openxml

5
推荐指数
1
解决办法
5271
查看次数

标签 统计

openxml ×10

c# ×5

openxml-sdk ×4

docx ×3

asp.net ×2

xml ×2

.net ×1

blob ×1

docx4j ×1

excel ×1

java ×1

mysql ×1

sql ×1

word-2007 ×1

wordml ×1