Eric White

Forum Replies Created

Viewing 13 posts - 241 through 253 (of 253 total)
  • Author
    Posts
  • in reply to: How to add a jquery chart to an openxml word doc? #2521

    Eric White
    Keymaster

    Probably converting to an image would be the most straight-forward. Word does has a stacked horizontal bar chart, so you could use the approach in the following screen-cast to update data for your chart.

    http://openxmldeveloper.org/home2/bm8qcmjy/public_html/blog/b/openxmldeveloper/archive/2011/03/28/updating-data-for-an-embedded-chart-in-an-open-xml-wordprocessingml-document.aspx

    Thinking out of the box – another approach works only with Office 2016 (and maybe 2013) – you could write a JavaScript Add-In and ‘include’ your bar chart graph as written in javascript/jquery.

    in reply to: OpenXML SDK 2.6 with WindowsBase #2514

    Eric White
    Keymaster

    So the question is, can we put together another ‘WindowsBase’ assembly that contains everything except System.IO.Packaging.

    in reply to: PresentationBuilder cannot copy video slides correctly #2512

    Eric White
    Keymaster

    This certainly sounds like a bug. I’ll attend to this in the next week or so. Should not be hard to fix.

    in reply to: OpenXML SDK 2.6 with WindowsBase #2510

    Eric White
    Keymaster

    I’ll tell you what I would do – I would, just to educate myself, dive into the reference source, and see how complicated those types are. You may be able to mitigate with a minimum of effort.

    http://referencesource.microsoft.com/

    I have to confess – I am not a linker guru, but there probably is a way to extract your required types from the WindowsBase assembly. Scanning the reference source might provide a clue.

    Will you please take a look and let me know what you find?

    One more question – can you take a junk copy of your source, and hack out the references, and just those references that cause the dependency on WindowsBase, and see if it is a very select few APIs or if VSTO has a pretty hard dependency on the types in WindowsBase other than System.IO.Packaging?

    in reply to: adding workbook to chart as an embeddedPackagePart #2509

    Eric White
    Keymaster

    Regarding the issue that the name is “package.bin”, the name of the file in the zip is irrelevant. Open XML does not specify, nor does it care. The only thing that matters are the relationship type and content type. When you do this call:

    `chartPart.AddNewPart(“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”, relationID)

    This sets the relationship and content types correctly.


    Eric White
    Keymaster

    Hi Prince,

    What you need to use is DocumentBuilder, which will appropriately bring in referenced charts, smart art, images, everything.

    Please see the following content on DocumentBuilder:

    DocumentBuilder Developer Center

    In particular, pay attention to #8, Fine-grained control when importing content using DocumentBuilder.

    Cheers, Eric

    in reply to: OpenXML SDK 2.6 with WindowsBase #2504

    Eric White
    Keymaster

    Hi Marcus,

    What kind of application are you building, i.e. ASP.NET, UWP, etc? What .NET framework are you using?

    What is the code that is referring to System.Windows-Freezable?

    It is not common for code to refer to the other bits in WindowsBase, so I am curious what is the circumstance where this occurs. Then we have to put together an approach to resolve the issues.

    Cheers, Eric

    in reply to: Group Shapes Position #2502

    Eric White
    Keymaster

    Hi Ryan,

    It has been several years since I worked with shapes, and even then didn’t do a great deal.

    But if I recall correctly, there is a fairly sophisticated ‘roll-up’ of positional properties in DrawingML. I remember a case where I was tasked with validating positions as calculated, and I dug into the spec, did the calculations, including rolling up of layout slides and master slide, and at the end of the process, discussed with the developer the exact algorithm to determine positions and etc. I don’t recall the details.

    I recommend that you review section 5.7 in the Open XML Part 3 – Primer. It will explain what you need to know.

    You can get it at this link:

    http://www.ecma-international.org/publications/standards/Ecma-376.htm

    Think link to Ecma 376 First Edition Part 3 is down near the bottom.

    Here is the direct link to the PDF.

    Ecma 376 First Edition Part 3

    Cheers, Eric

    in reply to: adding workbook to chart as an embeddedPackagePart #2493

    Eric White
    Keymaster

    In general, you should never create a workbook / spreadsheet package from scratch. It is far better to start with an existing, blank workbook, or a workbook that has a prototype chart. You can keep the ‘template’ workbook in a .NET resource, or you can include it directly in your code encoded in a string as base64Ascii.

    Screen-Cast: Converting Open XML files to/from Base 64 Encoded ASCII by using PowerTools for Open XML

    While the following content is about WordprocessingML and PresentationML, the principles in it apply to updating charts in SpreadsheetML. Much of the code could be re-purposed to update charts in SpreadsheetML.

    Updating Data for an Embedded Chart in an Open XML WordprocessingML Document


    Eric White
    Keymaster

    Hi,

    There is no functionality in DocumentBuilder to take the header from one section and the footer from another section. It is not a feature of DocumentBuilder. It is possible to manually write code to do this – it is probably only 30 or so lines of code. But you need to understand the below information.

    I am not clear on the error that you are seeing.

    Actually, sections / headers / footers are more complicated than would seem on first glance.

    First of all, there can be 1, 2, or 3 headers per section. Ditto for footers. Depending on default, even, or odd, then the others are set per some specific rules, documented in the standard. Further, sections can inherit from previous sections.

    In DocumentBuilder, there is a method, ProcessSectionsForLinkToPreviousHeadersAndFooters, which ‘normalizes’ headers and footers in sections. For instance, it makes sure that there are 3 headers and 3 footers per section, therefore the ‘interesting’ rules about how to determine the header or footer for a section are eliminated. Further, if a section inherits from a previous section, then the previous section’s headers and footers are placed in the section. After executing the method, every section has 3 headers and 3 footers, and no section inherits from a previous section.

    Then processing gets easier and more predictable within DocumentBuilder. Developers should be aware of these dynamics when using DocumentBuilder.

    Given my current schedule, I’m afraid I can’t debug the modifications to DocumentBuilder. It would take some time to get back into the internals of DocumentBuilder, and given what I need to get done, isn’t possible at the moment.

    You have an interesting use-case, and would be interested to hear more. Why do you need to get the header from one document, but the footer from another? Would love to hear the specific scenario. I love to learn new things about how people use Word.

    Cheers, Eric

    • This reply was modified 8 years, 9 months ago by  Eric White.
    in reply to: Copy Paragraph with Numbered list #2482

    Eric White
    Keymaster

    I’ll see what I can do. I have some personal commitments over the next 3 days.

    My idea is to create a new Open-Xml-PowerTools example, which contains two documents with conflicting numbering styles, where we want to take the numbering definitions from the second document in the sources.

    Have you looked at all of the existing DocumentBuilder examples, and understand setting up sources for DocumentBuilder? It would be worthwhile to go into the four examples, play with them, changing the sources, changing the number of paragraphs in each source, and so on.

    in reply to: Copy Paragraph with Numbered list #2480

    Eric White
    Keymaster

    Trust me, I fully understand how complicated numbering is. I wrote an MSDN article, Working with Numbered Lists in Open XML WordprocessingML. I then wrote the ListItemRetriever module which is a reference implementation of retrieving list items, and then eventually re-wrote it again. I suppose I have spent three full months working with numbering, so believe me, I know.

    Copying the numbering part from one document to another is not a good approach. It might work in this specific scenario, but has the potential to break the document far too easily.

    The problem you are facing is that the template document does not contain the definition for the numbering in Doc A – instead, it has some conflicting numbering defined for that particular numbering ID. (Numbering ids are the key identifier – abstract numbering is a level of indirection that enables reuse of the core numbering definition in multiple numIds.)

    Here is an easy way to solve your problem.

    When you set up your list of sources for DocumentBuilder, first include the numbered content at the beginning of the document. This should be the first source in your list of sources. Make a note of the number of paragraphs that you have inserted. This will pull in the numbering definitions from Doc A.

    Then set up the remainder of your sources exactly as you are currently doing, and fire off DocumentBuilder. This will create a document with the correct numbering, in row 2 of your table.

    Now, after DocumentBuilder is finished, open up the resulting document and delete those extra paragraphs that you have inserted at the beginning of the document. This is easy code to write, because you have saved away the number of paragraphs that you have inserted.

    Then you will have a document that looks like what you want.

    in reply to: Copy Paragraph with Numbered list #2471

    Eric White
    Keymaster

    The problem here is that I believe that DocumentBuilder is pulling the definition of the numbered list from an earlier document in the list of sources. There are multiple ways that numbering can be set up in a document, and one of the ways is that numbering is applied to styles, i.e. Heading1, Heading2, Heading3 have numbering applied to them. Is this the case with your documents?

    Depending on your use case, there is an easy way to resolve this, which is to use FormattingAssembler to create a new document where numbering is ‘flattened’. The resulting document does not use numbering, and instead, there is a new run that contains the correct list item. You then use the ‘flattened’ document as your source(s) for DocumentBuilder.

    So to debug this further, I need to know if in fact you have multiple documents in your list of sources, and what kind of numbered lists you are using.

    I haven’t yet determined how to enable attaching files to forum posts using bbPress. Can you upload your source documents (simplified if possible) to OneDrive or DropBox, and then post the link?

    Cheers, Eric

Viewing 13 posts - 241 through 253 (of 253 total)