Начиная с Microsoft Office 2007, в Microsoft Office используются форматы файлов на основе XML, например DOCX, XLSX и PPTX. Эти форматы и расширения имен файлов применяются к Microsoft Word, Microsoft Excel и Microsoft PowerPoint. В этой статье описаны основные преимущества формата, описаны расширения имен файлов и описано, как можно делиться файлами Office с людьми, которые используют более ранние версии Office.
В этой статье
Каковы преимущества форматов Open XML?
Что такое расширения имен XML-файлов?
Можно ли использовать одни и те же файлы в разных версиях Office?
Каковы преимущества форматов Open XML?
Форматы Open XML имеют множество преимуществ не только для разработчиков и их решений, но и для отдельных людей и организаций любого размера.
-
Сжатие файлов Файлы сжимаются автоматически и в некоторых случаях могут быть на 75 процентов меньше. Формат Open XML использует технологию zip-сжатия для хранения документов, что позволяет сэкономить место на диске, необходимое для хранения файлов, и уменьшает пропускную способность, необходимую для отправки файлов по электронной почте, по сетям и через Интернет. Когда вы открываете файл, он автоматически обновляется. При сохранение файла он автоматически застекается снова. Для открытия и закрытия файлов в Office не нужно устанавливать специальные почтовые Office.
-
Улучшенные возможности восстановления поврежденных файлов. Файлы имеют модульную структуру, поэтому различные компоненты данных файла хранятся отдельно друг от друга. Это позволяет открывать файлы даже в том случае, если компонент в файле (например, диаграмма или таблица) поврежден.
-
Поддержка расширенных функций Многие из расширенных Microsoft 365 требуют, чтобы документ хранился в формате Open XML. Например, автоскрытиеи проверка доступности (вдвух примерах) можно работать только с файлами, которые хранятся в современном формате Open XML.
-
Улучшенная конфиденциальность и дополнительный контроль над персональными данными. К документам можно делиться конфиденциально, так как личные сведения и конфиденциальные бизнес-данные, такие как имена авторов, комментарии, отслеживаемые изменения и пути к файлам, можно легко найти и удалить с помощью инспектора документов.
-
Улучшенная интеграция и совместимость бизнес-данных. Использование форматов Open XML в качестве основы для обеспечения взаимосвязи данных в наборе продуктов Office означает, что документы, книги, презентации и формы могут быть сохранены в формате XML, который доступен для использования и лицензирования бесплатно. Office также поддерживает определяемую клиентом схему XML, улучшающую существующие Office типов документов. Это означает, что клиенты могут легко разблокировать информацию в существующих системах и действовать с ней в Office программах. Сведения, которые создаются в Office могут быть легко использованы другими бизнес-приложениями. Все, что нужно для открытия и редактирования файла Office, — это с помощью ZIP-редактора и редактора XML.
-
Упрощенное обнаружение документов, содержащих макросы. Файлы, сохраненные с использованием стандартного суффикса x (например, .docx, .xlsx и .pptx), не могут содержать макрос Visual Basic для приложений (VBA) и макрос XLM. Макросами могут быть только файлы, расширение имени которых заканчивается на «m» (например, DOCM, XLSM и PPTM).
Прежде чем сохранять файл в двоичном формате, ознакомьтесь со статьей Могут ли разные версии Office одинаковыми файлами?
Как преобразовать файл из старого двоичного формата в современный формат Open XML?
Откройте файл в Приложение Office выберите файл > Сохранить как (или Сохранить копию,если файл хранится в OneDrive или SharePoint) и убедитесь, что для типа Сохранить как за установлен современный формат.
При этом будет создаваться новая копия файла в формате Open XML.
Что такое расширения имен XML-файлов?
По умолчанию документы, книги и презентации, которые вы создаете в Office, сохраняются в формате XML с расширениями имен файлов, которые добавляют «x» или «м» к уже знакомым расширениям имен файлов. Знак «x» означает XML-файл, в котором нет макроса, а «м» — XML-файл, содержащий макрос. Например, при сохранение документа в Word по умолчанию используется расширение .docx имени файла, а не .doc файла.
При сохранение файла в виде шаблона вы видите такое же изменение. Расширение шаблона, используемее в более ранних версиях, уже существует, но теперь в его конце есть «x» или «м». Если файл содержит код или макрос, его необходимо сохранить с помощью нового формата XML-файла с поддержкой макроса, который добавляет в расширение файла «м» для макроса.
В следующих таблицах перечислить все расширения имен файлов по умолчанию в Word, Excel и PowerPoint.
Word
Тип XML-файла |
Расширение |
Документ |
DOCX |
Документ с поддержкой макросов |
DOCM |
Шаблон |
DOTX |
Шаблон с поддержкой макросов |
DOTM |
Excel
Тип XML-файла |
Расширение |
Книга |
XLSX |
Книга с поддержкой макросов |
XLSM |
Шаблон |
XLTX |
Шаблон с поддержкой макросов |
XLTM |
Двоичная книга (не XML) |
XLSB |
Надстройка с поддержкой макросов |
XLAM |
PowerPoint
Тип XML-файла |
Расширение |
Презентация |
PPTX |
Презентация с поддержкой макросов |
PPTM |
Шаблон |
POTX |
Шаблон с поддержкой макросов |
POTM |
Надстройка с поддержкой макросов |
PPAM |
Демонстрация |
PPSX |
Демонстрация с поддержкой макросов |
PPSM |
Слайд |
SLDX |
Слайд с поддержкой макросов |
SLDM |
Тема Office |
THMX |
Можно ли использовать одни и те же файлы в разных версиях Office?
Office позволяет сохранять файлы в форматах Open XML и в двоичном формате файлов более ранних версий Office и включает в себя проверку совместимости и конвертеры файлов, позволяющие совместно использовать файлы в разных Office.
Открытие существующих файлов в Office Вы можете открыть файл, созданный в более ранней версии Office, а затем сохранить его в существующем формате. Так как, возможно, вы работаете над документом совместно с человеком, использующим более ранную версию Office, Office использует проверку совместимости, которая проверяет, что функция, которая не поддерживается в предыдущих версиях Office, не поддерживается. Когда вы сохраняете файл, проверка совместимости сообщает вам об этих функций, а затем позволяет удалить их, прежде чем продолжить сохранение.
Table of Contents
- Introduction
- What is Open XML
- Why use Open XML
- Installation
- Using Open XML
- Taking small steps
- Repetitive code
- Building blocks
- Alternate methods to using Open XML.
- Code samples
- Integration into your solution
- References
- Tools
- See also
- Requires
- Summary
- Source code
Introduction
This article will provide a solid base for performing common operations in Microsoft Word document 2007 format using Open XML SDK 2.5 for Office. What this article does not cover are drilling down each element type such as a paragraph element or what makes
up a specific type of style be it for a paragraph or a table.
The intent is to provide examples for developers who have never worked with Open XML for Office documents to create documents quickly without getting into all the specifics
What is Open XML
Open XML is an open ECMA 376 standard and is also approved as the ISO/IEC 29500 standard that defines a set of XML schemas for representing spreadsheets, charts, presentations, and word processing documents. Microsoft Office Word 2007, Excel 2007, PowerPoint
2007, and the later versions all use Open XML as the default file format.
A document (WordprocessingML document) is organized around the concept of stories. A story is a region of content in a WordprocessingML document.
Not all stories must be present in a valid WordprocessingML document. The simplest, valid WordprocessingML document only requires a single story—the main document story. In WordprocessingML, the main document story is represented by the main document part.
At a minimum, to create a valid WordprocessingML document using code, add a main document part to the document. In the code samples provided, the first code sample creates a document only with the main document part.
public
bool
CreateEmptyDocument(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if
(File.Exists(fileName))
{
File.Delete(fileName);
}
using(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
mainPart.Document.AppendChild(
new
Body());
mainPart.Document.Save();
}
returnHelpers.ValidateWordDocument(fileName) == 0;
}
The main document story of the simplest WordprocessingML document consists of the following XML elements:
document | The root element for a WordprocessingML’s main document part, which defines the main document story. |
body | The container for the collection of block-level structures that comprise the main story. |
p paragraph | Paragraph para = body.AppendChild(new Paragraph()); |
r run | runPara = para.AppendChild(new Run()); |
trange of text | runPara.AppendChild(new Text(“Some text in a paragraph”)); |
A simple example using the three parts above.
public
bool
CreateDocumentWithSimpleParagraph(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if(File.Exists(fileName))
{
File.Delete(fileName);
}
using
(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
var body = mainPart.Document.AppendChild(
new
Body());
Paragraph para = body.AppendChild(
new
Paragraph());
Run runPara = para.AppendChild(
new
Run());
// Set the font to Arial to the first Run.
var runProperties =
new
RunProperties(
new
RunFonts()
{
Ascii =
"Arial"
});
var color =
new
Color { Val = Helpers.ColorConverter(System.Drawing.Color.SandyBrown) };
runProperties.Append(color);
Run run = document.MainDocumentPart.Document.Descendants<Run>().First();
run.PrependChild<RunProperties>(runProperties);
var paragraphText =
"Hello from Word"
;
runPara.AppendChild(
new
Text(paragraphText));
mainPart.Document.Save();
}
return
Helpers.ValidateWordDocument(fileName) == 0;
}
Generates the following xml which can be viewed by changing the .docx file extension to .zip.
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
w:body
>
<w:p
>
<
w:r
>
<
w:rPr
>
<
w:rFonts
w:ascii
=
"Arial"
/>
<
w:color
w:val
=
"F4A460"
/>
</
w:rPr
>
<
w:t
>Hello from Word"</
w:t
>
</
w:r
>
</w:p
>
</
w:body
>
</
w:document
>
Why use Open XML
The Open XML file formats are useful for developers because they use an open standard and are based on well-known technologies: ZIP and XML. See also,
seven key benefits of Open XML by Eric White.
Installation
To work with Open XML documents a NuGet package needs to be installed by either right clicking on a Visual Studio solution, select manage NuGet packages, select the “Browse” tab, type into the search box DocumentFormat and the first item will be
DocumentFormat.OpenXml. With this item selected choose which project in your solution will use the library via clicking on the check box next to the project name and pressing the install button.
An alternate method is via Visual Studio Tool menu, select NuGet package manager, Package manager console, copy the install link from the following page into the console, press enter to install.
Using Open XML
Depending on what your objectives are using statements will be needed. To learn which using statements are required first create a class for performing operations on documents as done in the accompanying code samples (Operations.cs), for instance, copy the
method CreateEmptyDocument using section, change the file name. At this point Visual Studio will complain about not knowing what the objects are. Hover over each object, when the lightbulb appears allow it to insert the appropriate using statements.
Create a class to the new method and execute the method followed by opening the document from Windows Explorer. If the document fails to open this means the construct (code used) to create the document most likely created a malformed document. Rather than
traversing to the document in Windows Explorer copy the following code Helpers.ValidateWordDocument into your project from the accompanying source code passing in the newly created document and check for a return value of 0 which means the document should
be valid while any return value greater than 0 indicates one or more errors in the document structure. The method ValidateWordDocument as is writes the exceptions to Visual Studio’s Output window for inspection which will assist in tracking down the problem.
Caveat: Although there is very little exception handling in the source code provided does not mean you should not implement exception handling in the form of try/catch statements. The most common reason for an exception, the document already exists and is
currently open perhaps in Word as developers like to check the labor of their coding, forget to the close the document followed by running the same code again which created the document in the first place.
Taking small steps
Rather than write a document with a header, several paragraphs, images and list at once start out slow which is how the code samples were done for this reason, for easy of learning.
Step 1, create an empty document as shown below.
using
(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document = new
Document();
mainPart.Document.AppendChild(new
Body());
mainPart.Document.Save();
}
Even with this simple code it’s recommended during development time to validate the newly created document using Helpers.ValidateWordDocument. When ready for production disable this method from being called using directives are the easiest method e.g. if
in DEBUG mode run validation while in RELEASE mode don’t run the validation or perhaps do run the validation depending on your comfort level of “can something go wrong” in the wild.
Once you have studied the code above move on to adding a paragraph.
private
void
NextLevel(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if(File.Exists(fileName))
{
File.Delete(fileName);
}
using(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
var body = mainPart.Document.AppendChild(
new
Body());
var para = body.AppendChild(
new
Paragraph());
Run runPara = para.AppendChild(
new
Run());
var paragraphText =
"My first paragraph."
;
runPara.AppendChild(
new
Text(paragraphText));
mainPart.Document.Save();
}
Console.WriteLine(Helpers.ValidateWordDocument(fileName));
}
In the example above a paragraph is added to a newly created document, zero styling of text as this can get complex and as mentioned it’s best to learn in steps.
The following example adds to the above example styling the sole paragraph font color. The color for styling is in hex which many developers don’t know a hex representation of colors without referencing a conversion table. For this reason a method is provided
to translate a Color to its hex representation using Helpers.ColorConverter, pass in System.Drawing.Color.SandyBrown and get back F4A460.
private
void
NextLevel_1(string
pFileName)
{
var fileName = Path.Combine(DocumentFolder, pFileName);
if
(File.Exists(fileName))
{
File.Delete(fileName);
}
using
(var document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = document.AddMainDocumentPart();
mainPart.Document =
new
Document();
var body = mainPart.Document.AppendChild(
new
Body());
var para = body.AppendChild(
new
Paragraph());
Run runPara = para.AppendChild(
new
Run());
// Set the font to Arial to the first Run.
var runProperties =
new
RunProperties(
new
RunFonts()
{
Ascii =
"Arial"
});
var color =
new
Color { Val = Helpers.ColorConverter(System.Drawing.Color.SandyBrown) };
runProperties.Append(color);
Run run = document.MainDocumentPart.Document.Descendants<Run>().First();
run.PrependChild<RunProperties>(runProperties);
var paragraphText =
"Styling paragraph with font color"
;
runPara.AppendChild(
new
Text(paragraphText));
mainPart.Document.Save();
}
Console.WriteLine(Helpers.ValidateWordDocument(fileName));
}
Repetitive code
When a developer finds they are writing the same code over and over again this is a sure sign a common method may be in order. The perfect case may be adding a new paragraph yet there is not a lot of code for this to warrant a common method. A good candidate
is creating borders for a table within a document.
The following is a generic method to create borders for a table.
public
static
TableProperties CreateTableProperties()
{
return
newTableProperties(
new
TableBorders(
new
TopBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
BottomBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
LeftBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
RightBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
InsideHorizontalBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 },
new
InsideVerticalBorder { Val =
new
EnumValue<BorderValues>(BorderValues.Single), Size = 12 })
);
}
Which is called as follows.
var table =
new
Table();
// set borders
TableProperties props = Helpers.CreateTableProperties();
table.AppendChild(props);
By writing a method as shown above not only can it be used again it clear up code for easier coding and maintenance. Another example for code reuse is for adding an image to a document as there are many parts to write code for appending an image as shown
below.
public
static
voidAddImageToBody(WordprocessingDocument document,
string
relationshipId, int
pWidth, int
pHeight)
{
// Define the reference of the image.
var element =
new
Drawing(
new
Inline(
new
Extent() { Cx = pWidth, Cy = pHeight },
new
EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new
DocProperties()
{
Id = (UInt32Value)1U,
Name =
"Picture 1"
},
new
NonVisualGraphicFrameDrawingProperties(
new
GraphicFrameLocks()
{
NoChangeAspect =
true
}),
new
Graphic(
new
GraphicData(
new
Picture(
new
NonVisualPictureProperties(
new
NonVisualDrawingProperties()
{
Id = (UInt32Value)0U,
Name =
"New Bitmap Image.jpg"
},
new
NonVisualPictureDrawingProperties()),
new
BlipFill(
new
Blip(
new
BlipExtensionList(
new
BlipExtension()
{
Uri =
"{28A0092B-C50C-407E-A947-70E740481C1C}"
})
)
{
Embed = relationshipId,
CompressionState =
BlipCompressionValues.Print
},
new
Stretch(
new
FillRectangle())),
new
ShapeProperties(
new
Transform2D(
new
Offset() { X = 0L, Y = 0L },
new
Extents() { Cx = pWidth, Cy = pHeight }),
new
PresetGeometry(
new
AdjustValueList()
)
{ Preset = ShapeTypeValues.Rectangle }))
)
)
{
DistanceFromTop = (UInt32Value)0U,
DistanceFromBottom = (UInt32Value)0U,
DistanceFromLeft = (UInt32Value)0U,
DistanceFromRight = (UInt32Value)0U
});
// Append the reference to body, the element should be in a Run.
document.MainDocumentPart.Document.Body.AppendChild(
new
Paragraph(
new
Run(element)));
}
Note the structure of the method above, rather than attempting to write this method in a conventional manner as shown next, imagine debugging this code or modifying the code. This is why formatting the code as done above makes sense for not only this example
but for any complex operation.
public
static
voidAddImageToBodyBad(WordprocessingDocument document,
string
relationshipId, int
pWidth, int
pHeight)
{
// Define the reference of the image.
var element =
new
Drawing(
new
Inline(
new
Extent() { Cx = pWidth, Cy = pHeight },
new
EffectExtent() {LeftEdge = 0L,TopEdge = 0L,RightEdge = 0L,BottomEdge = 0L},
new
DocProperties() {Id = (UInt32Value)1U,Name =
"Picture 1"
},
new
NonVisualGraphicFrameDrawingProperties(
new
GraphicFrameLocks() {NoChangeAspect =
true
}),
new
Graphic(
new
GraphicData(
new
Picture(
new
NonVisualPictureProperties(
new
NonVisualDrawingProperties() {Id = (UInt32Value)0U,Name =
"New Bitmap Image.jpg"
},
new
NonVisualPictureDrawingProperties()),
new
BlipFill(
new
Blip(
new
BlipExtensionList(
new
BlipExtension() {Uri =
"{28A0092B-C50C-407E-A947-70E740481C1C}"
})) {Embed = relationshipId,CompressionState =BlipCompressionValues.Print},
new
Stretch(
new
FillRectangle())),
new
ShapeProperties(
new
Transform2D(
new
Offset() { X = 0L, Y = 0L },
new
Extents() { Cx = pWidth, Cy = pHeight }),
new
PresetGeometry(
new
AdjustValueList() ) { Preset = ShapeTypeValues.Rectangle }))) { Uri =
"http://schemas.openxmlformats.org/drawingml/2006/picture"
})) {DistanceFromTop = (UInt32Value)0U,DistanceFromBottom = (UInt32Value)0U,DistanceFromLeft = (UInt32Value)0U, DistanceFromRight = (UInt32Value)0U });
// Append the reference to body, the element should be in a Run.
document.MainDocumentPart.Document.Body.AppendChild(
new
Paragraph(
new
Run(element)));
}
Building blocks
By breaking up building a document the maintainer of the code can better understand code flow along with adding or modifying code to create a document. In the following code example (included with accompanying source code) there are several methods (with
overloads) to add paragraphs and bullets to a document along with a method to save the document to disk. When there is a need for new functionality such as adding a header, footer or appending an image the developer writes a method for each new feature needed
rather than code everything in one method which goes back to code reusability discussed above.
using
System;
using
System.Collections.Generic;
using
System.IO;
using
System.Linq;
using
DocumentFormat.OpenXml;
using
DocumentFormat.OpenXml.Packaging;
using
DocumentFormat.OpenXml.Wordprocessing;
namespace
WordOpenXml_cs
{
/// <summary>
/// Code by Karen Payne MVP along with assistance
/// from various forum post this class has been glued
/// together.
/// </summary>
public
classDocumentWriter : IDisposable
{
private
MemoryStream _memoryStream;
/// <summary>
/// Represents the document to work on
/// </summary>
private
WordprocessingDocument _document;
/// <summary>
/// Create a new document
/// </summary>
public
DocumentWriter()
{
_memoryStream =
new
MemoryStream();
_document = WordprocessingDocument.Create(_memoryStream, WordprocessingDocumentType.Document);
var mainPart = _document.AddMainDocumentPart();
var body =
new
Body();
mainPart.Document =
new
Document(body);
}
/// <summary>
/// Append a paragraph to the document
/// </summary>
/// <param name="sentence"></param>
public
voidAddParagraph(
string
sentence)
{
List<Run> runList = ListOfStringToRunList(
new
List<
string
> { sentence });
AddParagraph(runList);
}
/// <summary>
/// Append multiple paragraphs to the document
/// </summary>
/// <param name="sentences"></param>
public
voidAddParagraph(List<
string
> sentences)
{
List<Run> runList = ListOfStringToRunList(sentences);
AddParagraph(runList);
}
/// <summary>
/// Append paragraphs from a list of Run objects.
/// </summary>
/// <param name="runList"></param>
public
voidAddParagraph(List<Run> runList)
{
var para =
new
Paragraph();
foreach
(Run runItem
in
runList)
{
para.AppendChild(runItem);
}
var body = _document.MainDocumentPart.Document.Body;
body.AppendChild(para);
}
/// <summary>
/// Append to the document a list of sentences (list of string) and create bullet list
/// </summary>
/// <param name="sentences"></param>
public
voidAddBulletList(List<
string
> sentences)
{
var runList = ListOfStringToRunList(sentences);
AddBulletList(runList);
}
/// <summary>
/// Append to the document a list of sentences (list of Run) and create bullet list
/// </summary>
/// <param name="runList"></param>
public
voidAddBulletList(List<Run> runList)
{
// Introduce bulleted numbering in case it will be needed at some point
NumberingDefinitionsPart numberingPart = _document.MainDocumentPart.NumberingDefinitionsPart;
if
(numberingPart ==
null
)
{
numberingPart = _document.MainDocumentPart.AddNewPart<NumberingDefinitionsPart>(
"NumberingDefinitionsPart001"
);
var element =
new
Numbering();
element.Save(numberingPart);
}
// Insert an AbstractNum into the numbering part numbering list. The order seems to matter or it will not pass the
// Open XML SDK productivity Tools validation test. AbstractNum comes first and then NumberingInstance and we want to
// insert this AFTER the last AbstractNum and BEFORE the first NumberingInstance or we will get a validation error.
var abstractNumberId = numberingPart.Numbering.Elements<AbstractNum>().Count() + 1;
var abstractLevel =
new
Level(new
NumberingFormat()
{
Val = NumberFormatValues.Bullet
},
new
LevelText() { Val = "·"
}) { LevelIndex = 0 };
var abstractNum1 =
new
AbstractNum(abstractLevel) { AbstractNumberId = abstractNumberId };
if
(abstractNumberId == 1)
{
numberingPart.Numbering.Append(abstractNum1);
}
else
{
var lastAbstractNum = numberingPart.Numbering.Elements<AbstractNum>().Last();
numberingPart.Numbering.InsertAfter(abstractNum1, lastAbstractNum);
}
// Insert an NumberingInstance into the numbering part numbering list. The order seems to matter or it will not pass the
// Open XML SDK Productity Tools validation test. AbstractNum comes first and then NumberingInstance and we want to
// insert this AFTER the last NumberingInstance and AFTER all the AbstractNum entries or we will get a validation error.
var numberId = numberingPart.Numbering.Elements<NumberingInstance>().Count() + 1;
var numberingInstance1 =
new
NumberingInstance() { NumberID = numberId };
var abstractNumId1 =
new
AbstractNumId() { Val = abstractNumberId };
numberingInstance1.Append(abstractNumId1);
if
(numberId == 1)
{
numberingPart.Numbering.Append(numberingInstance1);
}
else
{
var lastNumberingInstance = numberingPart.Numbering.Elements<NumberingInstance>().Last();
numberingPart.Numbering.InsertAfter(numberingInstance1, lastNumberingInstance);
}
Body body = _document.MainDocumentPart.Document.Body;
foreach
(Run runItem
in
runList)
{
// Create items for paragraph properties
var numberingProperties =
new
NumberingProperties(new
NumberingLevelReference()
{
Val = 0
},
new
NumberingId() { Val = numberId });
var spacingBetweenLines1 =
new
SpacingBetweenLines() { After = "0"
}; // Get rid of space between bullets
var indentation =
new
Indentation() { Left = "720"
, Hanging =
"360"
};
// correct indentation
var paragraphMarkRunProperties1 =
new
ParagraphMarkRunProperties();
var runFonts1 =
new
RunFonts() { Ascii = "Symbol"
, HighAnsi =
"Symbol"
};
paragraphMarkRunProperties1.Append(runFonts1);
// create paragraph properties
var paragraphProperties =
new
ParagraphProperties(
numberingProperties,
spacingBetweenLines1,
indentation,
paragraphMarkRunProperties1);
// Create paragraph
var newPara =
new
Paragraph(paragraphProperties);
// Add run to the paragraph
newPara.AppendChild(runItem);
// Add one bullet item to the body
body.AppendChild(newPara);
}
}
public
voidDispose()
{
CloseAndDisposeOfDocument();
if
(_memoryStream !=
null
)
{
_memoryStream.Dispose();
_memoryStream =
null
;
}
}
/// <summary>
/// Save document.
/// </summary>
/// <param name="pFileName">Path and file name to save to</param>
public
voidSaveToFile(
string
pFileName)
{
if
(_document !=
null
)
{
CloseAndDisposeOfDocument();
}
if
(_memoryStream ==
null
)
throw
new
ArgumentException("This object has already been disposed of so you cannot save it!"
);
using
(var fs = File.Create(pFileName))
{
_memoryStream.WriteTo(fs);
}
}
/// <summary>
/// Dispose of document object.
/// </summary>
private
voidCloseAndDisposeOfDocument()
{
if
(_document !=
null
)
{
_document.Close();
_document.Dispose();
_document =
null
;
}
}
private
staticList<Run> ListOfStringToRunList(List<
string
> sentences)
{
var runList =
new
List<Run>();
foreach
(var item
in
sentences)
{
var newRun =
new
Run();
newRun.AppendChild(
new
Text(item));
runList.Add(newRun);
}
return
runList;
}
}
}
Alternate methods to using Open XML.
A logical choice for many is Word automation which is done by adding references to Primary Interop Assemblies (PIAs) as explained in the following code sample. Using Word automation is easier to use than Open XML with drawbacks such as PIA’s must be present
on the machine creating and modifying documents along with matching the same version of DLL’s your solution is dependent on. There is a possibility of objects not being properly released which overtime can ultimately slow or crash a machine.
Another option is to use a third party library such as Aspose, e-iceblue or GemBox. These libraries are easier to use then Open XML or Word automation yet this doesn’t negate using any of these options. In the accompanying code samples there is a project
mirroring the Open XML project which uses GemBox code samples to get an idea the difference between both methods. There are no code samples for Word automation as there is a chance of failure dependent on the developer machine which attempts to run automation
code samples while the Open XML and Gembox code samples will not fail unless when attempting to run the Open XML code samples a package is missing which may be resolved by selecting restore NuGet packages from right clicking on Solution Explorer and selecting
restore NuGet packages.
Code samples
Code samples are broken down into separate methods where from top to bottom build on each other from an creating an empty document to working with list (bulleted list), images, styling, tables and simple modification of text.
You are encouraged to run each code sample once, view results then go back and run each code sample again by setting a breakpoint at the start of each code sample and run through the code to better understand what the code does.
Integration into your solution
Add the NuGet package for DocumentFormat.OpenXml as explained in the Installation section above. Create a unit test project, create a test method for each operation which will be done in your application. As the methods don’t exist Visual Studio will prompt
for you to create the method(s).
If in a test method you write
var wordOperations =
new
WordOperations();
The method does not exist, select the lightbulb and select generate class WordOperations in a new file. Once created open this file and change the class from internal to public or select “generate new type” which brings up a dialog to add this class to another
project which is the best option as the class does not need to be in the unit test project. Once this is done create methods (which of course don’t exists) and as with the creation of the class Visual Studio will create these methods and properties for you.
This style of unit test is known as TDD (Test Driven Development).
The alternate which many developers opt for is to first create Open XML code in a class project or a class in the same project which will call the Word methods, create a unit test project and add a reference to the class project to write unit test against.
The last alternate is to simply write methods, once the code executes open the newly generated or modified documents from Windows Explorer and examine the documents.
Important notes in both projects documents are created under BinDebugDocuments where if the folder Documents does not exists it will be created by a post build event (refer to project properties, build events.
References
GitHub OfficeDev/Open-XML-SDK
Tools
Open XML Package Editor for Modern Visual Studios
See also
- Excel operations with Open XML, Automation and OleDb
- Processing Power Point templates using OpenXml
Requires
To run the code samples,
Microsoft Visual Studio 2015 or higher.
Summary
This article has presented the basics to write code for most common operations for generating Word documents using Open XML with tips and suggestions to write maintainable code. There is a good deal more which Open XML can perform which as a developer becomes
comfortable with Open XML will become easier while little interaction with Open XML can be frustrating which means, take your time building on what has been examined in this article.
Source code
GitHub repo
Docx – формат текстовых файлов MS Office, который вряд ли нуждается в презентации. Дело в том, что документы указанного расширения сегодня применяются повсеместно, и относятся к числу самых популярных как среди рядовых пользователей, так и учителей, педагогов, писателей и т.д. Формат файла docx появился в 2007 году, после чего регулярно подвергался модернизации, собственно, тенденция продолжается. В настоящее время документы MS Office можно открыть не только с помощью указанного пакета программ, но и за счет других бесплатных редакторов, «просмотрщиков». Чаще всего, программы для открытия docx предусматривают чтение и редактирование электронных таблиц, презентаций, текста и прочего. Рассмотрим самые популярные бесплатные варианты, и сделаем вывод относительно наиболее удобного из них для работы с описанным стандартом документов.
- Небольшой вес офисного пакета с быстрой установкой
- Загрузка и редактирование документов без зависаний
- Работа со всеми известными форматами документов
Скачать
Бесплатно Windows Office
Windows XP / Vista / 7 / 8 / 10 Версия: 1.4 29.10.2019
Размер файла: 43 МБ.
Как открыть файл в формате .docx?
Вначале разберемся с содержимым данного стандарта. Как известно, файлы с расширением .docx включают текст, картинки, стили форматирования, рисованные элементы. Такие документы создают в программе Microsoft Word, но их можно открывать и редактировать при помощи другого софта. Стоит добавить, что в отличие от расширения .DOC, включающего информацию в одном бинарном файле, данные типы документов основаны на открытом формате XML. Их основная суть в том, чтобы сделать содержание документов более доступным. Говоря о том, чем открыть файл DOCX, здесь ассортимент велик: от ранних версий Word 2007 до более удобных и универсальных бесплатных редакторов, включая Windows Office. В последнем случае не придется дополнительно загружать расширения для работы с другими стандартами офисных программ.
Программа Windows Office для открытия DOCX файлов
Если ассоциации на вашем ПК настроены правильно, вам не придется разбираться с тем, как открыть docx — будет достаточно дважды кликнуть мышкой по документу при помощи приложения Windows Office. В свойствах документа можно настроить открытие данного разрешения указанной программой по умолчанию. Если правильное применение разрешения не настроено, то при нажатии по файлу откроется окно, в котором Вы сможете указать путь к программе для работы с файлами docx. В нашем случае это Windows Office. Собственно, на этом всё. В дальнейшем, чтобы просмотреть или отредактировать документ никаких дополнительных действий помимо двойного клика мышкой по файлу не потребуется. Стоит добавить, что предложенная утилита отличается небольшим весом, быстро устанавливается и регулярно в автономном режиме.
Бесплатно Windows Office
Windows XP / Vista / 7 / 8 / 10 Версия: 1.0 04.12.2015
Размер файла: 45,2 МБ.
Начиная с Microsoft Office 2007, в Microsoft Office используются форматы файлов на основе XML, например DOCX, XLSX и PPTX. Эти форматы и расширения имен файлов применяются к Microsoft Word, Microsoft Excel и Microsoft PowerPoint. В этой статье приводятся основные преимущества формата, описаны расширения имен файлов и описаны способы предоставления общего доступа к файлам Office пользователям, использующим более ранние версии Office.
Каковы преимущества форматов Open XML?
Форматы Open XML включают большое количество преимуществ — не только для разработчиков и тех решений, которые они создают, но и для отдельных пользователей и организаций любого размера:
Компактные файлы Файлы автоматически сжимаются, а в некоторых случаях они могут быть не менее 75%. В формате Open XML для хранения документов используется технология сжатия ZIP, что позволяет экономить деньги, так как уменьшает объем дискового пространства, необходимого для хранения файлов, и снижает пропускную способность, необходимую для отправки файлов по электронной почте, через сети и через Интернет. При открытии файла он автоматически размещается в архиве. При сохранении файла он автоматически заархивирован. Для открытия и закрытия файлов в Office не нужно устанавливать специальные служебные программы для работы с ZIP.
Улучшенные возможности восстановления поврежденных файлов. Файлы имеют модульную структуру, поэтому различные компоненты данных файла хранятся отдельно друг от друга. Это позволяет открывать файлы даже в том случае, если компонент в файле (например, диаграмма или таблица) поврежден или поврежден.
Поддержка дополнительных функций Многие дополнительные возможности Office 365 требуют, чтобы документ хранился в формате Open XML. Такие вещи , как автосохранение и Проверка читаемости: в двух примерах можно работать только с файлами, которые ХРАНЯТСЯ в формате Open XML.
Улучшенная конфиденциальность и дополнительный контроль над персональными данными. Доступ к документам может быть конфиденциальным, так как личные данные и конфиденциальные сведения, такие как имена авторов, примечания, исправления и пути к файлам, можно легко идентифицировать и удалить с помощью инспектора документов.
Улучшенная интеграция и совместимость бизнес-данных. Использование форматов Open XML в качестве платформы взаимодействия с данными для набора Office позволяет сохранять документы, листы, презентации и формы в формате XML-файлов, которые можно бесплатно использовать для пользователей и лицензий. Кроме того, Office поддерживает пользовательские XML-схемы, которые улучшают существующие типы документов Office. Это означает, что пользователи могут легко разблокировки информации в существующих системах и работать с ними в знакомых программах Office. Информация, созданная в Office, может быть легко использована другими бизнес-приложениями. Все, что нужно для открытия и редактирования файла Office — это служебная программа ZIP и редактор XML.
Упрощенное обнаружение документов, содержащих макросы. Файлы, сохраненные с использованием суффикса x, используемого по умолчанию (например, DOCX, XLSX и PPTX), не могут содержать макросы Visual Basic для приложений (VBA) и макросы XLM. Макросы могут содержать только те файлы, расширения имен которых заканчиваются на «м» (например, DOCM, xlsm и PPTM).
Если вы хотите сохранить файл в двоичном формате, чтение может иметь разные версии Office.
Как преобразовать файл из старого двоичного формата в современный формат Open XML?
Открыв файл в приложении Office, щелкните файл> Сохранить как (или сохранить копию, если файл хранится в OneDrive или SharePoint) и убедитесь, что для типа сохранить как задан современный формат.
Это приведет к созданию новой копии файла в формате Open XML.
Что такое расширения имени XML-файла?
По умолчанию документы, листы и презентации, созданные в Office, сохраняются в формате XML с расширениями имен файлов, которые добавляют «x» или «m» к расширениям имен файлов, с которыми вы уже знакомы. «X» обозначает XML-файл без макросов, а «m» обозначает XML-файл, который содержит макросы. Например, при сохранении документа в Word файл теперь использует расширение имени DOCX-файла по умолчанию вместо расширения DOC-файла.
При сохранении файла в качестве шаблона отображаются изменения такого же вида. Расширение шаблона, используемое в более ранних версиях, теперь содержит «x» или «m» в конце. Если файл состоит из кода или макросов, необходимо сохранить его с помощью нового формата XML-файлов с поддержкой макросов, который добавляет «m» для макроса к расширению файла.
В приведенных ниже таблицах перечислены все расширения имен файлов по умолчанию в Word, Excel и PowerPoint.
Office Open XML – это целая серия форматов документов, создаваемых и используемых в MSOffice. К ним относятся:
Известны случаи, когда возникают неполадки при открытии и редактировании файла. В этой статье будут рассмотрены основные причины возникновения ошибки «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого» при открытии, а также способы решения данной проблемы.
Скриншот ошибки «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого»
Причины возникновения ошибки в Ворд
Самая распространенная ошибка открытия файла с расширением .docx имеет следующую формулировку: «Не удается открыть файл OfficeOpen XML.docx из-за ошибок его содержимого». На месте «Office Open XML», соответственно, должно быть название текущего документа, в работе с которым возникли неполадки.
Проблема может возникнуть внезапно или иметь какие-то предшествующие причины, например, сложности с последним сохранением файла или неполадки, возникшие при последнем редактировании файла. Вне зависимости от специфики возникновения неполадок, данная проблема решается общими методами.
Как исправить «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого»
Для начала, необходимо проанализировать, какие типы файлов находятся в документе и которые из них необходимо восстановить. Документ Office Open XML может содержать следующие типы информации:
- текстовые данные;
- изображения;
- гиперссылки;
- таблицы;
- диаграммы;
- различные формы;
- закладки и многое другое.
Проще всего восстановлению поддаются текстовые данные. Для открытия следующего типа данных можно использовать текстовый редактор Notepad++, который имеет нумерацию строк и подсветку синтаксиса. При использовании данной программы будет утеряно все форматирование файла .docx, однако, удастся сохранить данные и восстановить их.
Еще один способ восстановления документа Office Open XML посредством программы Adobe In Design:
- поменять расширение файла (.docx или .xml на .txt);
- открыть программу InDesign и создать в ней новый текстовый фрейм, куда перетащить курсором файл с новым расширением .txt;
- использовать открывшиеся данные или воспользоваться поиском конкретного текста посредством функции «найти и заменить».
Восстановление файла встроенными функциями Windows
Вне зависимости от установленной версии Windows, каждая сборка предполагает наличие такого простого редактора, как Word Pad. Он не имеет широких возможностей форматирования текста, зато может быть полезен в подобных ситуациях. Для того, чтобы использовать эту программу, необходимо кликнуть на документе правой кнопкой мыши и в открывшемся списке нажать на «Открыть с помощью…». В появившемся окне появится иконка программы WordPad, которая поможет открыть не только текстовую информацию, но и изображения с гиперссылками.
Использование программы Xml Pad
Бесплатная утилита, которую можно свободно скачать в сети. Эта программа проста в установке, она позволяет просматривать и редактировать несколько типов файлов, но нас интересует только .xml, поэтому необходимо кликнуть на него. Затем необходимо открыть «битый» файл посредством этой программы и приступить к редактированию. Основное преимущество данной программы заключается в том, что она показывает строку, которая вызывает ошибку при открытии файла. В некоторых случаях достаточно удалить или редактировать данную строку, чтобы вернуть файл в рабочее состояние. Если же данный метод не сработает, то придется извлечь все текстовые данные, перенести их в новый файл и сохранить, создав новое форматирование вручную.
Совет: Следует всегда сохранять резервную копию файла и хранить ее либо на внешнем диске, либо в другой директории. Это поможет исключить возникновение подобных «Не удается открыть файл OFFICE Open XML из-за ошибок его содержимого» проблем.
Видео в котором используется метод открытия файла посредством программы Notepad ++:
Документы в формате XML запускаются в любых текстовых редакторах, браузерах, а также в специальных онлайн-сервисах. Расскажем, как открыть файл XML: с тегами и без них, только для просмотра или для редактирования.
Содержание
- XML: что за формат и где часто используется
- Программы для просмотра и редактирования файлов XML
- Word
- Excel
- Стандартный «Блокнот»
- Через Google Chrome и другие браузеры
- NotePad++
- Онлайн-сервисы для редактирования файлов XML
- XmlGrid
- TutorialsPoint
XML – язык разметки. С помощью него пользователи группируют, структурируют данные, которые представлены в виде обычного текста или таблицы. Для создания структуры (иерархии) используют самописный синтаксис – теги. Их придумывает сам автор документа. На рисунке ниже показан текст, обернутый в произвольные теги: <to> (от кого послание), <from> (кому), <heading> (заголовок послания), <body> (само послание).
Язык XML используют для передачи данных между разными видами приложений без потери их структуры. Формат отличается надежностью. Повредить информацию в таких файлах сложнее, поэтому документы, которые публикуют в интернете, часто идут именно с этим расширением. Файлы xml встречаются на ГосУслугах, в Росреестре и на других государственных сайтах.
Документ xml можно открыть разными способами. Выбор программы или веб-сервиса зависит от того, в каком виде должен быть представлен текст: с тегами или без них, с возможностью редактирования или просто чтение.
Только просмотр текста/таблицы доступен в любом браузере, в Microsoft Word и Excel. Редактировать файл можно в онлайн-сервисах и в стандартном «Блокноте» в Windows.
Программы для просмотра и редактирования файлов XML
Программы Microsoft Office есть практически на каждом компьютере с Windows, поэтому часто для запуска xml не нужно ничего дополнительно устанавливать.
Если Офиса у вас нет, и вы не хотите скачивать целый пакет, чтобы открыть один единственный файл, воспользуйтесь «Блокнотом» или сторонним приложением NotePad++.
Word
Чтобы установить Word на ПК, нужно скачать целый пакет Microsoft Office, где будет сам текстовый редактор, Excel (для работы с таблицами) и Power Point (для создания презентаций).
Не все версии Microsoft Word умеют открывать документы xml без тегов. Подойдут варианты Word 2007 и выше. Версии ниже показывают информацию только с тегами.
В Word вы сможете просматривать текст, отправлять его на печать в принтер. Редактирование документа здесь недоступно.
Как открыть файл XML в Word:
- Нажмите правой кнопкой мыши на файл xml – при этом не важно, где он находится: на рабочем столе или в папке на жестком диске.
- Наведите стрелку на пункт «Открыть с помощью». Выберите программу Word. Если ее нет в списке, нажмите «Выбрать другое приложение».
- В появившемся меню нажмите на «Microsoft Word». При желании поставьте галочку под списком приложений, чтобы система открывала xml-файлы с помощью Word. Щелкните по «ОК».
- Подождите, пока запустится файл с текстом.
Excel
Если данные документа представлены в виде таблицы, используйте другую программу из пакета Microsoft Office – инструмент Excel.
Открыть документ в Excel можно таким же образом, как и в Word. Кликнуть по файлу правой клавишей, а затем в списке «Открыть с помощью» выбрать Excel.
Если Excel в списке не оказалось, используйте другой метод запуска:
- Если у вас Windows 10, нажмите на иконку в виде лупы справа от кнопки «Пуск». Вбейте в поисковую строку слово «excel».
- В верхней области панели появятся результаты поиска – нажмите на «Microsoft Excel», чтобы запустить программу.
- В интерфейсе приложения нажмите на «Файл». Выберите пункт «Открыть».
- В «Проводнике Windows» найдите документ xml. Выделите его левой кнопкой мыши и нажмите «Открыть».
- Выберите способ открытия файла, например, XML-таблица. Нажмите на «ОК».
- Подождите, пока загрузится таблица. Если она большая, процесс займет некоторое время.
Стандартный «Блокнот»
В «Блокноте» откроется текст, обернутый в теги. При необходимости вы сможете его отредактировать в окне.
Запустить файл можно через то же контекстное меню документа. Выбираете «Открыть с помощью», нажимаете на «Блокнот».
Если «Блокнота» в списке приложений не оказалось, используйте другой способ:
- Откройте пустое окно «Блокнота». Для этого найдите программу через поиск Windows 10. Введите название приложения в строке поиска – выберите «Блокнот» в результатах запроса.
- Теперь зажмите мышкой файл xml (на рабочем столе либо в папке в «Проводнике») и перетащите его на пустое окно «Блокнота».
- Подождите, пока документ откроется.
Через Google Chrome и другие браузеры
Для Google Chrome и любого другого браузера действует тот же способ запуска: через пункт «Открыть с помощью» в контекстном меню файла. Можно выбрать «Гугл Хром» или любой другой веб-обозреватель: Internet Explorer, Yandex, Opera и т. д.
Еще один способ – перетаскивание файла на окно браузера. Откройте новую пустую вкладку обозревателя (обычно это иконка в виде плюса на панели с вкладками). Перетащите файл xml мышкой на любую область пустой вкладки.
Подождите, пока браузер загрузит документ в свое окно.
NotePad++
В NotePad++ можно читать и редактировать готовые xml-документы, а также создавать новые. Приложение также работает с другими форматами веб-файлов, например, с YML.
При установке программы можно выбрать русский язык интерфейса. Плюс NotePad++ в том, что она выделяет корневую структуру кода, что упрощает работу с документом. В «Блокноте», к примеру, теги идут чуть ли не сплошным текстом.
Как открыть XML-файл в NotePad++:
- Запустите приложение и нажмите на раздел «File» («Файл»). В меню выберите «Open» («Открыть»).
- Либо сразу после запуска программы зажмите комбинации клавиш Ctrl + O. Также можно нажать на вторую иконку «Open» на панели инструментов, которая находится чуть ниже.
- В «Проводнике Windows» найдите документ xml. Выберите его левой кнопкой мыши и нажмите на «Открыть».
- Подождите, пока загрузится файл со структурой кода.
Онлайн-сервисы для редактирования файлов XML
Для работы онлайн-сервисов понадобится стабильный скоростной интернет. Рассмотрим два инструмента: XML Grid и TutorialsPoint.
XmlGrid
Сервис простой и функциональный. Здесь можно создавать свои файлы xml, редактировать готовые документы. Документ можно загрузить двумя способами: вставить ссылку на файл в интернете либо загрузить физический документ с жесткого диска ПК.
Интерфейс у сервиса на английском языке, но разобраться в нем сможет каждый:
- Откройте веб-сервис. Нажмите на «Open File», если документ находится на жестком диске вашего ПК. В «Проводнике Windows» найдите файл, выделите его левой кнопкой мыши – нажмите «Открыть».
- Кликните «Submit», чтобы система начала загрузку файла. Подождите некоторое время, пока она завершится.
- Если у вас есть ссылка на файл в интернете, кликните по «By URL». Вставьте скопированную ссылку в поле и нажмите «Submit».
- Подождите, пока откроется структура файла (список главных веток).
- Чтобы изменить название ветки, просто нажмите на ее название. Включится режим редактирования: удалите старую надпись и введите новую.
- Чтобы отредактировать текст, откройте ветку, в которой он находится. Для этого нажмите на стрелку слева от ее названия. Теперь выберите левой кнопкой синее поле для редактирования.
- Выберите пункт «Edit» в контекстном меню.
- Введите нужный текст в синее поле.
- Чтобы увидеть результат редактирования (структуру текста в целом), нажмите на стрелку над таблицей.
- В меню выберите «Show XML Source Code».
- Подождите, пока откроется дополнительное окно с текстом и тегами. Чтобы закрыть окно, нажмите на крестик в правом верхнем углу.
- Когда закончите редактирование, нажмите на иконку «Save» справа от кнопок «Validate» и «Textview». Выберите папку на жестком диске для сохранения файла.
TutorialsPoint
Сервис работает с множеством файлов: XML-документы, изображения, программные коды. Интерфейс тоже на английском языке.
Как работать в сервисе:
- Перейдите на сайт инструмента. Выберите кнопку «XML Editor».
- Нажмите на «Upload File». Выберите способ загрузки с помощью URL (ссылка на файл в интернете) либо загрузка документа с ПК («Upload from Computer»). В первом случае вставьте скопированную ранее ссылку и нажмите «Go». Во втором случае выберите файл в окне «Проводник Windows» и нажмите «Открыть».
- В разделе «Editable XML Code» появится содержимое файла xml. В нем можно менять текст и теги как в обычном редакторе.
- По мере редактирования в правой части окна «XML Tree» данные тоже меняются: вместо старого текста и тегов появляются новые. Этот режим удобно использовать для визуальной оценки файла.
- Когда закончите редактирование, нажмите на «Download» справа вверху, чтобы скачать измененный документ обратно на ПК.
Если вам нужно лишь прочитать содержимое файла xml, выбирайте браузер, Word или Excel (если документ представлен в виде таблицы, а не обычным текстом). Для редактирования можно использовать стандартный «Блокнот», стороннюю программу NotePad++ либо онлайн-сервисы: XML Grid или TutorialsPoint.
Исходный адрес:Как работать с документами в формате Office Open XML (очередь)
Резюме: Office Open XMLформатЭтот файл заменяет предыдущий двоичный системный файл Office. этоДокументацияПознакомлю вас с компонентами, содержащимися в отформатированном документе, и некоторыми сценариями, демонстрирующими функции этих файлов.
Фрэнк Райс, Microsoft Corporation
Применимо к: Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007, Microsoft Office Word 2007
скачать2007OfficeManipulatingOpenXMLFilesSample.exe.
Содержание этой страницы
Обзор | |
Создание файла в формате Office Open XML | |
Обзор файлов формата Office Open XML | |
Редактировать документы, созданные в формате Office Open XML, вручную | |
Работа с документами в формате Office Open XML с помощью программирования | |
в заключении | |
Дополнительные ресурсы |
Обзор
В более ранних версиях Microsoft Office файлы, созданные в Microsoft Office Excel, Microsoft Office PowerPoint и Microsoft Office Word, сохранялись в уникальном едином файловом формате и назывались двоичными файлами. Выпуск Microsoft Office System 2007 представил новый формат файлов для Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007 и Microsoft Office Word 2007: формат Office Open XML.
Формат Office Open XML основан на технологии архивов XML и ZIP. Как и в более ранних версиях Microsoft Office, документы 2007 хранятся в одном файле или контейнере, поэтому процесс управления этими документами по-прежнему прост. Однако, в отличие от более ранних файлов, файлы в формате Office Open XML могут открываться компонентами на дисплее, что позволяет получить доступ к структуре этого файла.
В этой статье вы можете вручную открыть файл и просмотреть каждую часть документа, чтобы просмотреть файл формата Office Open XML. Кроме того, вы также можете запрограммировать этот документ. Файлы, применимые в этой статье, можно получить, загрузив,2007OfficeManipulatingOpenXMLFilesSample.exe.Если вы не можете загрузить, вы можете вместо этого использовать свои собственные программные файлы и файлы изображений.
Создание файла в формате Office Open XML
В этом разделе вы обнаружите формат файла XML образца документа Word 2007, содержащего текст, изображения и атрибуты.
вWordСоздать вOffice Open XML Форматировать документ
1. |
Запустите Word 2007. |
||||||||||||||
2. |
В новый документ вставьте следующий текст: Soaring with the American Bald Eagle Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla rutrum. Phasellus feugiat bibendum urna. Aliquam lacinia diam ac felis. In vulputate semper orci. Quisque blandit. Mauris et nibh. Aenean nulla. Mauris placerat tempor libero. Pellentesque bibendum. In consequat, sem molestie iaculis venenatis, orci nunc imperdiet justo, id ultricies ligula elit sit amet ante. Sed quis sem. Ut accumsan nulla vel nisi. Ut nulla enim, ullamcorper vel, semper vitae, vulputate vel, mi. Duis id magna a magna commodo interdum. |
||||||||||||||
3. |
Выделите «Парящий с американским белоголовым орлом», а затем на начальной вкладке в группе стилей установите стиль заголовка. |
||||||||||||||
4. |
Далее вставляем картинку в документ:
|
||||||||||||||
5. |
Теперь добавьте свойство документа:
стол1.Настройки свойств документа
|
||||||||||||||
6. |
Затем добавьте комментарии к документу
|
||||||||||||||
7. |
Далее сохраняем документ:
|
||||||||||||||
8. |
Закройте Word. |
Обзор файлов формата Office Open XML
В этом разделе вы просмотрите только что созданный образец документа.
Просмотр документов в формате Office Open XML
1. |
Откройте проводник Windows. |
||||||
2. |
Найдите файл SampleWordDocument.docx, щелкните его правой кнопкой мыши и выберите «Переименовать». важный: Выполните следующие три шага, чтобы извлечь файлы формата Office Open XML. В зависимости от используемой операционной системы (Windows XP или Windows Vista) шаг 5 отличается. |
||||||
3. |
Добавьте расширение .zip после имени файла, и теперь имя файла станет SampleWordDocument.docx.zip. |
||||||
4. |
Когда появится предупреждающее сообщение, нажмите ОК. |
||||||
5. |
Распакуйте файл-контейнер:
На следующих шагах вы определите ключевые компоненты, включенные в документ. |
||||||
6. |
Проверьте часть [Content_Types] .xml:
|
||||||
7. |
Проверьте папку .rels: Ассоциация представляет собой связь между двумя компонентами. Ассоциации — это компоненты, хранящиеся в подпапке _rels. Любой компонент имеет связанный компонент, который содержится в папке _rels той же структуры.Эта папка содержит компонент .rels, который определяет их взаимосвязь. Подпапки создаются в той же папке, что и компонент. Соответствующее имя получается путем добавления расширения .rels к имени файла исходного компонента (связанный компонент, используемый для файлов документов, является исключением; его имя — «.rels»).
|
||||||
8. |
Проверьте папку docProps: Свойства документа в версии 2007 всегда структурированы в трех программах Microsoft Office System. Разделенные на три логических XML-компонента, они хранятся во вложенной папке docProps. Это упрощает доступ пользователей, поскольку они находятся в одном месте и не будут перепутаны с другим содержимым документа. В проводнике Windows дважды щелкните папку docProps, щелкните правой кнопкой мыши файл core.xml, выберите «Открыть с помощью», а затем щелкните Internet Explorer. |
||||||
9. |
Проверьте компоненты core.xml: Откройте компонент core.xml и просмотрите атрибуты, которые вы ввели ранее. Компонент core.xml содержит атрибуты, введенные пользователем для идентификации документа, такие как заголовок, тема и автор. |
||||||
10. |
Проверьте компонент custom.xml: В проводнике Windows откройте custom.xml в Internet Explorer. Компонент custom.xml содержит любые настраиваемые атрибуты документа, добавленные в документ пользователями, разработчиками или с помощью настраиваемой логики. |
||||||
11. |
Проверьте компоненты app.xml: В проводнике Windows откройте app.xml в Internet Explorer. Компонент app.xml включает уникальные атрибуты, назначенные документу на уровне приложения, такие как количество страниц статьи, количество текстовых строк, версия приложения и т. Д. |
||||||
12. |
Обнаружить папку слов: Большинство компонентов содержимого находится в подпапке word. Кроме того, в нем есть подпапка, связанная с _rels. Дважды щелкните папку _rels. Во вложенной папке _rels для подключения всех компонентов документа используется связанное имя document.xml.rels. |
||||||
13. |
Проверьте компонент document.xml.rels: Откройте document.xml.rels в Internet Explorer. Ассоциация использует идентификаторы и универсальные идентификаторы ресурсов (URI) для поиска компонентов. Это позволяет всем несвязанным компонентам быть недействительными без каких-либо жестко заданных ссылок. Это будет подробно рассмотрено в следующих главах. В папке Word обратите внимание на компонент styles.xml. |
||||||
14. |
Проверьте компонент styles.xml: Styles.xml в Internet Explorer. Он содержит некоторые доступные акценты и тени, которые вы можете использовать в своем документе. |
||||||
15. |
Обязательные и дополнительные компоненты |
||||||
16. |
Использование этих компонентов в файлах формата Office Open XML позволяет хранить документы в высоком модульном виде. Некоторые компоненты должны быть действительными для документа, например, document.xml и fontTable.xml. |
||||||
17. |
Проверьте компонент document.xml:
|
||||||
18. |
Проверьте компонент fontTable.xml:
|
||||||
19. |
Отметьте слово «media and word» для вложений папок: В проводнике Windows дважды щелкните вложенную папку мультимедиа. Обратите внимание, что мультимедийный файл .gif представляет собой изображение, которое вы вставили ранее. Замечания: Вы можете заметить, что имя файла изображения было изменено с Eagle1.gif на image1.gif. Цель изменения — решить вопросы конфиденциальности, поскольку злоумышленник может получить некоторый контент об этом компоненте из имени компонента в документе, например из файла изображения. Например, автор может защитить содержимое документа, зашифровав части текста в документе. Но если вставлены два изображения old_widget.gif и new_reen усиленный_widget.gif. Даже если текст защищен, злоумышленник может узнать, что виджет обновлен. Использование обычных файлов изображений, таких как image1 и image2, может добавить дополнительную защиту файлам формата Office Open XML. |
||||||
20. |
Закройте SampleWordDocument.docx.zip без сохранения. |
Редактировать документы, созданные в формате Office Open XML, вручную
Формат Office Open XML имеет множество преимуществ. Одним из преимуществ является возможность использовать документы, созданные в системе Office 2007, без программ Office. Это позволяет создавать серверные решения для сбора, доступа и редактирования документов в масштабируемой среде.
На следующих шагах вы вручную отредактируете документ Word 2007. Обратите внимание, что эти сценарии — лишь небольшой пример этого нового формата файла. В большинстве случаев пользователи не будут вручную редактировать документы таким образом. Но для разработчиков просмотр документов, созданных Office 2007 без написания кода, принесет большие преимущества, особенно при разработке решений или написании моделей программ. Как вы видели ранее, после доступа к файлу-контейнеру этого документа вы можете легко просматривать отдельные компоненты. Это также означает, что вы можете редактировать, заменять или даже добавлять компоненты. Обычно вы можете изменять примечания к документу и обновлять свойства документа.
использоватьXMLмодифицироватьOffice Open XMLФорматировать документ
1. |
В Word 2007 откройте документ SampleWordDocument.docx. Замечания: Перед открытием файла удалите расширение файла .zip. |
2. |
Нажмите кнопку Microsoft Office, выберите «Подготовка» и нажмите «Свойства». Обратите внимание на поля автора, заголовок, тему и примечания, а затем закройте документ. |
3. |
Откройте проводник Windows и перейдите к документу SampleWordDocument.docx. |
4. |
использовать steps described for your operating systemРаспакуйте файл документа. Примечания в документе Word 2007 хранятся в компоненте с именем comments.xml. Такое разделение тела документа позволяет легко находить и изменять компоненты. |
5. |
Перетащите компонент comments.xml из сжатого файла на рабочий стол Windows. |
6. |
Щелкните правой кнопкой мыши компонент comments.xml, наведите указатель на «Метод открытия», а затем выберите текстовый редактор или редактор XML, чтобы открыть его, например «Блокнот». |
7. |
Найдите следующий текст: <w:t>A study of the bald eagle</w:t> |
8. |
Замените или отредактируйте текст элемента <w: t>, например, измените его на: <w:t>A detailed study of the bald eagle</w:t> |
9. |
Сохраните и закройте файл. |
10. |
С рабочего стола Windows перетащите компонент comments.xml в папку word сжатого файла. |
11. |
Когда появится предупреждающее сообщение, подтверждающее замену файла, нажмите OK. На следующем шаге вы можете изменить свойства документа, а затем подтвердить результат изменения. Атрибуты документа хранятся во вложенных папках в корневом каталоге сжатого файла, что упрощает доступ к ним и их редактирование. |
12. |
Дважды щелкните папку docProps. |
13. |
Перетащите компонент core.xml из сжатого файла на рабочий стол Windows. |
14. |
Откройте core.xml в текстовом редакторе. |
15. |
Найдите следующий текст: <dc:creator>Nancy Davolio</dc:creator> |
16. |
Замените или отредактируйте текст элемента <dc: Creator>. Например, замените текст внутри своим именем. |
17. |
Сохраните и закройте файл, затем перетащите его обратно в папку docProps. |
18. |
Когда появится предупреждающее сообщение, подтверждающее замену файла, нажмите OK. |
19. |
Перейдите к контейнеру документа, щелкнув стрелку назад или значок вверх на панели инструментов, пока не найдете файл .zip. |
20. |
Удалите расширение .zip из имени файла, а затем откройте файл в Word 2007. |
21. |
Нажмите кнопку Microsoft Office, выберите «Подготовка» и нажмите «Свойства». Обратите внимание, что текст примечания был изменен. В то же время атрибут автора также был изменен. |
На предыдущих шагах вы изменили документ, отредактировав компонент XML в документе. В новом формате файла вы также можете заменить весь компонент документа, чтобы изменить его содержимое, формат или атрибуты. Это позволяет использовать существующие компоненты документа для обновления отдельных документов или обновления целых библиотек документов.
Примером использования существующих компонентов для изменения документа является изменение стиля, используемого в документе. Этот метод полезен, если вам нужно управлять стилями нескольких документов, но вы хотите сохранить физическую версию. Чтобы изменить все типы, используемые в документе, нужно заменить компонент styles.xml.
Этот сценарий позволяет вам скомпилировать набор компонентов стиля для всех документов, а затем создать приложение, которое позволяет пользователям автоматически выбирать разные стили. В фоновом режиме ваше приложение может заменить один готовый компонент другим. На следующих шагах вы выполните эту операцию вручную.
Измените один, заменив существующие компонентыOffice Open XMLФорматировать документ
1. |
Сделайте копию документа SampleWordDocument.docx и назовите его AnotherSampleWordDocument.docx. |
2. |
Откройте AnotherSampleWordDocument.docx в Word 2007. |
3. |
На начальной странице нажмите «Изменить стиль», наведите указатель на «Набор стилей» и нажмите «Уникальный». Этот документ похож на рисунок 2. Рисунок2. Документ в уникальном стиле |
4. |
Сохраните и закройте документ. |
5. |
Использоватьsteps described for your operating system• Извлечь файл документа AnotherSampleWordDocument.docx. |
6. |
Дважды щелкните папку word и перетащите компонент styles.xml на рабочий стол Windows. Этот компонент будет использоваться для обновления первого созданного вами документа. |
7. |
Щелкните стрелку назад или значок «Вверх» на панели инструментов, чтобы перейти к контейнеру документа, пока не найдете файл .zip. |
8. |
Теперь откройте документ SampleWordDocument.docx в Word 2007 и обратите внимание на стиль основной части документа. |
9. |
Закройте документ. |
10. |
Использоватьsteps described for your operating systemИзвлеките файл документа SampleWordDocument.docx. |
11. |
Дважды щелкните, чтобы открыть папку word, а затем перетащите styles.xml с рабочего стола Windows в папку word, чтобы заменить исходный файл. |
12. |
Когда появится предупреждающее сообщение, подтверждающее копирование файла, нажмите OK. |
13. |
Перейдите к контейнеру документа файла SampleWordDocument.docx, щелкнув стрелку назад или значок «Вверх» на панели инструментов, пока не будет найден файл .zip. |
14. |
Удалите расширение .zip из имени файла, а затем откройте файл в Word 2007. Обратите внимание, что стиль документа был изменен на тот, который вы видите в AnotherSampleWordDocument.docx. Сначала удалите расширение .zip имени файла AnotherSampleWordDocument.docx.zip. |
Другой аспект этой сцены стиля — использование компонента документа верхнего и нижнего колонтитула для быстрого копирования тех же параметров из документа Word 2007 в один или несколько документов Word 2007. Компоненты верхнего и нижнего колонтитула можно изменить вручную, об этом вы узнаете позже. Конечно, этот процесс также можно автоматизировать с помощью кода. Это полезно для организаций, которые хотят использовать стандартные верхние и нижние колонтитулы документов и не должны оплачивать административные задачи в каждом базовом документе. Кроме того, если изменить формат вашего верхнего и нижнего колонтитула, очень легко заменить верхний и нижний колонтитулы.
На следующих шагах вы добавите простой заголовок в SampleWordDocument.docx. Затем обновите его заголовком, отличным от документа AnotherSampleWordDocument.docx.
ОбновитьOffice Open XML Форматировать заголовок документа
1. |
Откройте SampleWordDocument.docx в Word 2007. |
2. |
На вкладке вставки щелкните раскрывающийся список кнопки заголовка, а затем выберите буквенный заголовок. Заголовок будет добавлен к заголовку документа. Этот документ похож на рисунок 3. Рисунок 3. Образец документа с буквенным заголовком |
3. |
Сохраните и закройте файл. |
4. |
Откройте AnotherSampleWordDocument.docx в Word 2007. |
5. |
На вкладке Вставка щелкните раскрывающийся список кнопки заголовка и выберите годовой заголовок. Заголовок будет добавлен к заголовку документа с указанием года. Этот документ похож на рисунок 4. Рисунок 4. Образец документа с годовым заголовком |
6. |
Сохраните и закройте файл. |
7. |
использоватьsteps described for your operating system• Извлеките файл документа для AnotherSampleWordDocument.docx. |
8. |
Дважды щелкните папку word и перетащите файл header1.xml на рабочий стол Windows. |
9. |
Перейдите к контейнеру документа, щелкая стрелку назад или значок «Вверх» на панели инструментов, пока не найдете файл .zip. |
10. |
Удалите расширение файла .zip из имени файла AnotherSampleWordDocument.docx.zip. |
11. |
Использоватьsteps described for your operating systemРаспакуйте файл документа SampleWordDocument.docx. |
12. |
Дважды щелкните папку Word, чтобы открыть ее, и перетащите файл header1.xml с рабочего стола Windows в папку Word. |
13. |
Когда появится предупреждающее сообщение, подтверждающее замену файла, нажмите OK. |
14. |
Перейдите к контейнеру документа, щелкая стрелку назад или значок вверх на панели инструментов, пока не будет найден файл .zip. |
15. |
Удалите расширение .zip из имени файла SampleWordDocument.docx.zip, чтобы удалить расширение .zip из имени файла, а затем откройте файл в Word 2007. Обратите внимание на новый заголовок. |
Документы также могут содержать двоичные компоненты, такие как файлы изображений или проекты Microsoft VBA, к которым вы можете легко получить доступ как к компонентам XML. Замена двоичных компонентов принесет некоторые интересные вещи. Например, вы можете заменить двоичные компоненты, чтобы заменить целые объекты OLE, такие как изображения Microsoft Office Visio. Ручные операции не имеют значения. Вам необходимо рассмотреть сценарий, который позволяет автоматически обновлять изображения с сервера. Написать инструмент для выполнения таких операций относительно просто. На следующих шагах вы будете использовать изображение для обмена двоичным файлом изображения в документе AnotherSampleWordDocument.docx.
вOffice Open XMLОбмен двоичными компонентами в файлах формата
1. |
использовать steps described for your operating system.Распакуйте файл документа SampleWordDocument.docx. |
2. |
Дважды щелкните папку Word, а затем дважды щелкните папку мультимедиа, чтобы найти изображение Eagle1.gif. |
3. |
Щелкните правой кнопкой мыши Eagle1.gif и выберите Предварительный просмотр. Это изображение, которое появляется в документе. |
4. |
Найдите изображение Eagle2.gif в загруженном файле и скопируйте его на рабочий стол Windows. (Или вы можете заменить свой собственный файл изображения) |
5. |
На рабочем столе Windows щелкните правой кнопкой мыши изображение Eagle2.gif и выберите «Предварительный просмотр». Это файл изображения, который вы будете использовать для замены текущего изображения. |
6. |
Закройте окно предварительного просмотра, щелкните правой кнопкой мыши Eagle2.gif и нажмите «Переименовать», чтобы изменить его имя на Eagle1.gif. |
7. |
Перетащите переименованный Eagle1.gif с рабочего стола Windwos в папку мультимедиа. |
8. |
Когда появится предупреждающее сообщение, подтверждающее замену файла, нажмите OK. |
9. |
Перейдите к контейнеру документа, щелкая стрелку назад или кнопку «Вверх» на панели инструментов, пока не найдете файл .zip. |
10. |
Удалите из имени расширение .zip, а затем откройте файл в Word 2007. Обратите внимание, что изображение было обновлено. |
Некоторые компоненты необходимы в документах системы Microsoft Office, например, компонент document.xml в Word 2007. Однако некоторые компоненты являются необязательными и существуют только тогда, когда требуются определенные функции. Это означает, что если вам не нужны определенные функции, вы можете удалить эти компоненты и связанные отношения. Документ Office 2007, содержащий код проекта, называется документом с поддержкой макросов (расширение .docm для Word 2007, расширение .xlsm для Excel 2007 и расширение .pptm для PowerPoint 2007). В отличие от документов, не содержащих макросов, документы с поддержкой макросов хранят код в компонентах. Тип компонента зависит от типа кода в документе. Например, документ с поддержкой макросов, содержащий код VBA, хранит свои данные в двоичном компоненте vbaProject.bin.
Другие типы проектов включают книги Excel 2007 с использованием макросов в стиле Excel 4.0 (макросы XLM) или слайд-шоу PowerPoint 2007 с командными кнопками. Эти функции расположены в отдельных компонентах, поэтому их можно легко идентифицировать и удалять.
На следующих шагах вы создадите простой документ с поддержкой макросов и продемонстрируете его возможности. Затем вы удалите компонент vbaProject.bin и его взаимосвязь из документа и увидите его эффект. Обратите внимание, что вы также можете удалить компоненты проекта из файла с поддержкой макросов, щелкнув «Сохранить как» в меню «Файл» или сохранив файл как файл без макросов (.docx, .pptx или .xlsx). Однако для этого необходимо открыть этот документ в программе Система Office 2007. Выполните действия, описанные в следующей процедуре, чтобы выйти из проекта без использования программ Office.
ИзOffice Open XMLФорматировать документ удаленVBAпроект
1. |
Используйте Word 2007, чтобы открыть SampleWordDocument.docx. |
2. |
В группе кода на вкладке инструментов разработки щелкните Visual Basic, чтобы открыть редактор Visual Basic. Вы также можете нажать ALT + F11, чтобы открыть редактор Visual Basic. Замечания: Если вы не можете найти тег инструментов разработчика, вам необходимо его добавить. Нажмите кнопку Microsoft Office, затем выберите параметр Word, а затем на общей вкладке выберите «Показать вкладку инструментов разработки на ленте». |
3. |
В окне кода редактора Visual Basic введите или вставьте следующий оператор: Sub SampleCode() Замечания: Если вы не видите окно кода, щелкните меню «Просмотр» и выберите окно кода. |
4. |
В меню «Выполнить» щелкните «Выполнить подпроцесс / пользовательскую форму», чтобы запустить код. Вы также можете нажать F5. |
5. |
Нажмите кнопку ОК, чтобы закрыть окно сообщения, а затем закройте редактор Visual Basic. Затем сохраните его как документ с поддержкой макросов. |
6. |
Нажмите кнопку Microsoft Office, выберите «Сохранить как» и нажмите «Документ Word». |
7. |
В раскрывающемся списке Тип файла выберите Документ Word с поддержкой макросов (.docm), а затем щелкните Сохранить, чтобы закрыть документ. |
8. |
использоватьsteps described for your operating system.Извлеките файл документа для SampleWordDocument.docm. |
9. |
Дважды щелкните папку Word, а затем дважды щелкните папку _rels. |
10. |
Щелкните document.xml.rels, щелкните Метод открытия, а затем выберите текстовый редактор, например Блокнот. Замечания: Этот файл может быть только для чтения. Если он доступен только для чтения, закройте файл, щелкните имя файла правой кнопкой мыши и выберите «Свойства». Затем снимите флажок атрибута только для чтения. Затем снова откройте файл. |
11. |
Найдите и удалите следующие теги XML: <Relationship Id="rId1" Type="http://schemas.microsoft.com/office/2006/relationships/vbaProject" Target="vbaProject.bin"/> |
12. |
Сохраните и закройте файл. |
13. |
Щелкните правой кнопкой мыши document.xml.rels и выберите «Копировать». |
14. |
Вернитесь к файлу SampleWordDocument.docm.zip и откройте его. |
15. |
Дважды щелкните папку Word. |
16. |
Щелкните проект vbaProject.bin правой кнопкой мыши и выберите команду Удалить. При появлении запроса нажмите ОК, чтобы удалить. |
17. |
Дважды щелкните папку _rels. |
18. |
Щелкните правой кнопкой мыши и выберите Вставить. |
19. |
Когда будет предложено подтвердить сообщение о замене файла (предупреждение о копировании и замене в Windows Vista), нажмите OK. |
20. |
Перейдите к контейнеру документа, щелкая стрелку назад или кнопку «Вверх» на панели инструментов, пока не найдете файл .zip. |
21. |
Щелкните правой кнопкой мыши папку SampleWordDocument.docm и выберите команду Удалить, чтобы удалить ее. При появлении запроса нажмите ОК. |
22. |
Удалите расширение .zip из имени файла SampleWordDocument.docm.zip. При появлении запроса нажмите кнопку ОК в окне предупреждения о переименовании, а затем снова откройте файл в Word 2007. |
23. |
Нажмите ALT + F11, чтобы просмотреть проект VBA. Обратите внимание, что подпрограмма была потеряна. Замечания: Вы можете изменить расширение файла с .docm на .docx, чтобы получить аналогичные результаты. Файлы с расширением без макросов никогда не будут выполнять код. |
Работа с документами в формате Office Open XML с помощью программирования
Важное значение формата Office Open XML — его безграничный потенциал для индивидуальных решений. Вы можете получить доступ и изменить содержимое документа с помощью инструментов, которые могут обрабатывать файлы XML или ZIP на любой платформе. Например, вы можете использовать управляемый код в Microsoft Visual Studio для написания серверного приложения для сохранения документов системы 2007 Office. Вы можете использовать мощную библиотеку классов XML Microsoft .NET Framework для редактирования любого компонента документа XML, содержащегося в файле формата Office Open XML.
Мощный способ манипулировать компонентами документа и их отношениями — использовать пространство имен System.IO.Packaging, которое входит в состав Microsoft Windows Software Development Kit. Пространство имен System.IO.Packaging будет подробно рассмотрено позже.
Замечания:
Вы можете загрузить предварительную версию программного обеспечения Microsoft WinFX Runtime Components — Beta2 из центра загрузок Microsoft.
На следующих шагах вы разработаете консольное приложение для изменения стиля форматирования без использования Word 2007. Этот проект завершается заменой компонентов стиля в документе Word 2007 на компоненты стиля, извлеченные из документа. В результате целевой документ принимает тот же стиль, что и документ, извлекший этот стиль.
Замечания:
Таких примеров кода здесь много, вы можете скачать их. После загрузки этих готовых примеров кода вы сможете использовать эти функции Code Snippet Manager в Microsoft Visual Studio 2005 (в меню «Инструменты»), чтобы вставить их в свой проект. Вы можете скачать2007 Office System Sample: Open XML File Format Code Snippets for Visual Studio 2005.
Выполните следующие шаги, чтобы изменить формат документа.
вOffice Open XMLИзменить стиль в формате документа
1. |
Сначала создайте папку и подпапки для размещения обновляемых документов и компонентов styles.xml. В этом упражнении назовите папку WordOpenXMLFormatSample. В папке добавьте подпапку с именем NewStylePart. |
||||||
2. |
Скопируйте SampleWordDocument.docx в папку WordOpenXMLFormatSample. |
||||||
3. |
Перейдите к файлу AnotherSampleWordDocument.docx, добавьте расширение файла .zip после имени файла и откройте файл. |
||||||
4. |
Перейдите к компоненту styles.xml в папке word, щелкните его правой кнопкой мыши и выберите «Копировать». |
||||||
5. |
Перейдите к папке WordOpenXMLFormatSample, а затем перейдите к подпапке NewStylePart. Щелкните правой кнопкой мыши подпапку NewStylePart и выберите «Вставить». Теперь папка содержит документ Word 2007 с компонентами стиля по умолчанию, а вложенная папка содержит компонент styles.xml из документа со стилем под названием «Fancy». |
||||||
6. |
Запустите Visual Studio 2005. |
||||||
7. |
В меню «Файл» выберите «Новый проект». |
||||||
8. |
В диалоговом окне «Новый проект» в дереве типов проектов слева щелкните «Другие языки», выберите «Visual C #», а затем выберите «Консольное приложение» в представлении списка шаблонов. |
||||||
9. |
В диалоговом окне «Имя» назовите проект StyleSwapper и нажмите «ОК». Visual Studio создает все файлы в проекте и сохраняет их в каталоге проекта, например на диске «Проекты Visual Studio» StyleSwapper. Чтобы точно увидеть, где сохранен проект, или изменить местоположение, сделайте следующее:
|
||||||
10. |
Щелкните меню проекта и щелкните Добавить ссылку. |
||||||
11. |
На вкладке обзора в поле поиска найдите WindowsBase.dll. На момент публикации этого документа файл расположен на диске «Program Files» Reference Assemblies «Microsoft» WinFx «v3.0. |
||||||
12. |
Выберите файл WindowsBase.dll и нажмите ОК. Убедитесь, что ссылка была создана, щелкнув ссылку в обозревателе решений. |
||||||
13. |
В обозревателе решений щелкните правой кнопкой мыши Program.cs и выберите Просмотреть код. |
||||||
14. |
Введите следующий код в пространство имен окна кода: using System.IO; Чтобы использовать содержимое документа Система Office 2007, вам необходимо его открыть. System.IO.Packaging имеет член верхнего уровня под названием Package, который эквивалентен документу. После открытия проекта Package вы проверите его структуру и сможете управлять его компонентами. Пакеты могут быть открыты только для чтения, только для записи или для чтения / записи. |
||||||
15. |
Добавьте следующий код после скобок ({) оператора Class Program. Следующие строки устанавливают переменные, содержащие расположение вашего документа Word и style.xml. Эти операторы предполагают, что папка WordOpenXMLFormatSample создана на диске C. private static String stylePath = @"C:"WordOpenXMLFormatSample"NewStylePart"styles.xml"; Замечания: Строки, начинающиеся с символа @, называются буквальными строковыми литералами. Это указывает программе использовать определенные строки, которые появляются при извлечении файла. |
||||||
16. |
Когда проект запущен, основной процесс будет выполнен автоматически. Между открывающим знаком ({) и закрывающей скобкой (}) в Main введите следующую строку: SwapStylePart(packagePath, stylePath); Эта строка вызывает процедуру SwapStylePart, которую вы добавите ниже. Он передает путь к документу Word 2007 и компоненту styles.xml. |
||||||
17. |
Добавьте следующий код после закрывающей скобки (}) после Main: static void SwapStylePart(String packagePath, String stylePath) На следующих шагах вы добавите код в программу SwapStylePart, которая используется для открытия документов, которые отображаются как объекты пакета и имеют разрешения на чтение / запись. Обратите внимание на использование оператора using. Его цель — автоматически обработать объект Package и очистить используемую память после завершения оператора. |
||||||
18. |
Введите следующий код в программу SwapStylePart: using (Package package = Package.Open(packagePath, FileMode.Open, FileAccess.ReadWrite)) Чтобы иметь возможность использовать любой компонент документа Система Office 2007, вам сначала нужно найти его. Вы можете использовать URL-адрес для ссылки на определенный компонент документа. URL-адрес — это путь, уникальный для каждого компонента. |
||||||
19. |
В скобках оператора using введите следующий оператор: // Set the URI for the styles document part (/word/styles.xml). На момент написания этой статьи пространство имен System.IO.Packaging не позволяло копировать или заменять существующий компонент. Чтобы обмениваться компонентами, вы должны сначала удалить существующие компоненты, а затем создать новый с тем же URL-адресом. Обратите внимание, что удаление компонентов не повлияет на отношения каких-либо компонентов. Любые отношения остаются неизменными и по-прежнему применяются к новому компоненту. |
||||||
20. |
Введите следующий код после строки, добавленной на предыдущем шаге: // Delete the existing document part (/word/styles.xml). Для добавления нового компонента документа в пакет требуется URL-адрес. В этом случае вам нужно только повторно использовать тот же URL-адрес для воссоздания компонента документа стиля. При создании пакета требуется дополнительный параметр: тип содержимого компонента. Типы контента, используемые в настоящее время в документе, можно найти в компоненте [Content_Types] .xml, расположенном в контейнере документа. |
||||||
21. |
Введите следующий код после строки, добавленной на предыдущем шаге: // Recreate a new document part for styles(/word/styles.xml). PackagePart Последним шагом при использовании вновь созданного компонента стиля является копирование XML из исходного компонента styles.xml во вновь созданный компонент. Пространство имен System.IO.Packaging не обрабатывает XML локально в XML-документе, поэтому способ копирования содержимого в .NET Framework — это использование Streams. На следующих шагах вы добавите код, который открывает компонент внешнего стиля в форме потока и записывает его в компонент документа нового стиля. Чтобы скопировать поток, вы вызовете программу CopyStream и выполните передачу между исходным и целевым потоками. |
||||||
22. |
Введите следующий код после строки, добавленной на предыдущем шаге: using (FileStream fileStream = new FileStream(stylePath, FileMode.Open, FileAccess.Read)) |
||||||
23. |
Затем добавьте программу CopyStream после закрывающей скобки программы SwapStylePart: private static void CopyStream(Stream source, Stream target) Этот процесс устанавливает размер буфера в памяти, и поток данных из исходного компонента styles.xml сохраняется в буфере. При выполнении операции чтения байтов эти байты будут записаны в новый компонент styles.xml. Чтобы увидеть приложение в действии, вам необходимо построить проект: Чтобы увидеть эффект от программы, вам необходимо собрать проект: |
||||||
24. |
В меню «Создать» выберите «Создать StyleSwapper». Замечания: Если во время сборки произойдет ошибка, вы увидите диалоговое окно с вопросом, хотите ли вы запустить последнюю сборку. Нажмите Нет, вы увидите описание ошибки в списке ошибок. Если вы не видите список ошибок, в меню «Просмотр» щелкните «Список ошибок». |
||||||
25. |
Предполагая, что ошибок нет, вы запускаете код сейчас. Но сначала вы можете просмотреть текущий документ: |
||||||
26. |
Откройте SampleWordDocument.docx в Word 2007. |
||||||
27. |
Закройте Word 2007 и добавьте расширение .zip после имени файла SampleWordDocument.docx. |
||||||
28. |
Нажмите F5. Вы увидите, что консоль Windows появится, и вскоре вы увидите, что она исчезнет. Поскольку это консольное приложение, оно не имеет пользовательского интерфейса, а просто появляется. |
||||||
29. |
Удалите расширение .zip из имени файла и снова откройте его в Word 2007. Обратите внимание, что стиль документа был изменен на «уникальный» стиль. |
В следующем упражнении показано, как использовать настраиваемое приложение для выполнения пакетных операций с файлами формата Office Open XML без Word 2007. В этом упражнении вы создадите размещенную программу, которая будет искать нужные файлы в папках и подпапках, соответствующих определенным критериям. Приложение определяет компоненты документа на наличие терминов и содержащие файлы данных. Вы можете представить себе использование этой программы для идентификации документов, содержащих конкретные имена клиентов, или документов, содержащих конкретные наименования продуктов. Вы также можете добавить в приложение дополнительную логику и использовать другие термины для замены существующих, по сути копируя функцию «Найти-заменить» в Word 2007 без использования приложения.
Поиск в группе по ключевым словамOffice Open XMLФорматировать файл
1. |
Запустите Visual Studio 2005. |
||||||||||||||||||||||||||||||||||||
2. |
В меню «Файл» выберите «Новый проект». |
||||||||||||||||||||||||||||||||||||
3. |
В диалоговом окне «Новый проект» в дереве типов проектов слева выберите Visual C #. Затем выберите «Приложение Windows», измените имя проекта на «Поиск ключевых слов» и нажмите «ОК». Visual Studio создала все файлы в проекте. |
||||||||||||||||||||||||||||||||||||
4. |
В обозревателе решений щелкните правой кнопкой мыши Form1.cs и выберите пункт Конструктор представлений. |
||||||||||||||||||||||||||||||||||||
5. |
На вкладке Form1.cs [Дизайн] добавьте в форму следующие элементы управления, а затем установите их свойства так, чтобы форма была похожа на рисунок 5. Рисунок5. KeywordSearch Форма Таблица 2. Список элементов управления, используемых в форме поиска по ключевым словам документа в формате Office Open XML
|
||||||||||||||||||||||||||||||||||||
6. |
В обозревателе решений щелкните правой кнопкой мыши Form1.cs и выберите команду Просмотреть код. |
||||||||||||||||||||||||||||||||||||
7. |
В окне кода добавьте следующий оператор после существующего оператора using: using System.Xml; using System.IO; using System.IO.Packaging; Чтобы использовать пространство имен System.IO.Packaging, вам необходимо добавить ссылку на библиотеку WindowsBase.dll, которая находится в .NET Framework 3.0 SDK (WinFX): |
||||||||||||||||||||||||||||||||||||
8. |
В меню проекта щелкните Добавить ссылку. |
||||||||||||||||||||||||||||||||||||
9. |
В поле «Найти» на вкладке «Обзор» найдите имя файла WindowsBase.dll. На момент публикации этой статьи файл находится в каталоге «Program Files» Reference Assemblies «Microsoft» WinFx «v3.0. |
||||||||||||||||||||||||||||||||||||
10. |
Щелкните ОК. |
||||||||||||||||||||||||||||||||||||
11. |
После открывающей скобки ({) общедоступного частичного класса Form1: Form добавьте следующие переменные класса: FileInfo[] tempfiles; List<FileInfo> files = new List<FileInfo>(); Затем добавьте код к кнопке поиска: |
||||||||||||||||||||||||||||||||||||
12. |
На вкладке Form1.cs [Design] дважды щелкните кнопку поиска, чтобы добавить событие Click. |
||||||||||||||||||||||||||||||||||||
13. |
Между двумя скобками процедуры btnSearch_Click добавьте следующий код: Boolean match = false; // Ensure that the user added a search term. В этом коде объявляется логическая переменная, чтобы показать, нашел ли поиск совпадения. Затем, если текстовое поле пусто, код предложит пользователю ввести ключевое слово для поиска. Другие текстовые поля в форме имеют значения по умолчанию. Затем определите класс List, который будет содержать файлы, возвращенные в результате поиска. Класс List предоставляет массив, размер которого можно динамически увеличивать. Переменная dirs указывает на каталог, в котором начинается поиск. Затем вызов процедуры GetDirsFiles вернет список файлов в каталоге. Затем код будет циклически запрашивать возвращенный набор файлов и вызывать процедуру GetDocPart для обнаружения каждого файла по ключевому слову поиска. Если нет соответствующей опции, сообщение будет добавлено в список. |
||||||||||||||||||||||||||||||||||||
14. |
Добавьте программу GetDirFiles: public List<FileInfo> GetDirFiles(DirectoryInfo dir) Эта программа устанавливает переменную selectedItem в соответствии со стилем поиска, отображаемым в поле со списком. Затем вызовите метод GetFiles в текущем каталоге, чтобы вернуть все файлы, соответствующие шаблону поиска. Возвращенный файл добавляется в список файлов. Если пользователь устанавливает флажок «Включить подпапки», поиск в каждом подкаталоге текущего каталога выполняется путем рекурсивного вызова программы GetDirFiles (с именем каждой подпапки). Наконец, список файлов возвращается вызывающей программе (btnSearch_Click). |
||||||||||||||||||||||||||||||||||||
15. |
Добавьте следующий код после программы GetDirFiles: private Boolean GetDocPart(FileInfo file) Программа изначально устанавливает значения переменных для пространства имен в типе отношения документа и структуре атрибута документа. Затем документ открывается как объект Package. В пространстве имен System.IO.Packaging вы можете получить доступ к различным компонентам в пакете через отношения между компонентами (определенные в реляционном компоненте) и через URL-адрес, содержащий путь к структуре компонента. Примером URL-адреса для компонента изображения является «word» media «picture.jpg. Если вы знаете URL-адрес определенного компонента документа в документе Система Office 2007, вы можете напрямую получить доступ, изменить или удалить компонент. В программе GetDocPart передайте Вызовите метод GetPart в объекте Package, а затем передайте его по URL-адресу компонента, чтобы вернуть компонент document.xml. На следующем шаге объект XmlDocument указывает на XML-файл, содержащий одну или несколько ссылок на разные пространства имен. Как и все файлы XML, синтаксический анализатор XML использует имена с префиксом пространства имен для доступа к большому количеству элементов и атрибутов в документе. Замечания: Имя элемента без квалификатора считается компонентом пространства имен по умолчанию. Квалификаторы этих пространств имен должны быть разрешены в их ссылки на пространства имен во время выполнения. Чтобы сделать эту задачу простой и последовательной, .NET Framework включает XmlNamespaceManager, который предоставляет большое количество инструментов управления пространством имен. Один из них — класс NameTable. Класс NameTable хранит имена атрибутов и элементов внутри. Когда имя элемента или атрибута появляется в документе XML несколько раз, оно сохраняется только один раз в NameTable. Когда квалификатор пространства имен конфликтует, он может использовать строку в NameTable для разрешения. В следующем операторе создается объект XmlDocument, который заполняется содержимым компонента документа. Далее для поиска проверяется содержимое объекта. Обратите внимание, что метод IndexOf в C # такой же, как метод InStr в Visual Basic. Если ключевое слово поиска найдено, каталог и имя файла добавляются в список в форме, и программа возвращает True. В противном случае соответствующая опция не будет найдена, и программа вернет False. |
||||||||||||||||||||||||||||||||||||
16. |
Наконец, в конструкторе Form1 дважды щелкните кнопку закрытия и добавьте в программу следующий оператор: Close(); программа испытаний: |
||||||||||||||||||||||||||||||||||||
17. |
На диске C или в любом другом месте по вашему выбору создайте папку с именем WordDocuments. |
||||||||||||||||||||||||||||||||||||
18. |
Скопируйте документ SampleWordDocument.docx и документ AnotherSampleWordDocument.docx в папку WordDocuments. |
||||||||||||||||||||||||||||||||||||
19. |
Откройте Word 2007 и создайте новый документ. |
||||||||||||||||||||||||||||||||||||
20. |
Добавьте текст (не включая Eagle) и сохраните документ в папке WordDocuments с именем SearchSampleDocument.docx. |
||||||||||||||||||||||||||||||||||||
21. |
Нажмите F5, чтобы запустить этот проект. |
||||||||||||||||||||||||||||||||||||
22. |
В форме в поле «Каталог поиска» введите расположение документа .docx. |
||||||||||||||||||||||||||||||||||||
23. |
В поле Search Term введите Eagle, а затем нажмите Search. Два документа, содержащие «Eagle», отображаются в поле списка, как показано на рисунке 6. Документ SearchSampleDocument.docx не отображается. Рисунок6. Результаты поиска по ключевым словам |
||||||||||||||||||||||||||||||||||||
24. |
закрой окно. |
Это весь код, который вам нужен для поиска в документе, в этом случае вам не нужно использовать Word 2007. Вам нужно добавить несколько небольших функций: подсчитать количество документов для поиска, добавить функции замены или поиск других компонентов.
в заключении
В этой статье вы знакомы со структурой файлов формата Office Open XML. Вы просмотрели формат файла и продемонстрировали, как легко открывать и редактировать документы Microsoft Office 2007 с помощью стандартных технологий XML и ZIP. Вы также узнали, как управлять файлами формата Office Open XML вручную и с помощью программирования. Благодаря этому контенту у вас есть основа для создания пользовательских приложений для вашей организации.
Укажите адрес статьи:Как работать с документами в формате Office Open XML (очередь)
From Wikipedia, the free encyclopedia
The OOXML Document icon, as appears on the Microsoft OneDrive web service |
|
Filename extension |
.docx, .docm |
---|---|
Internet media type |
application/vnd. |
Developed by | Microsoft, Ecma, ISO, IEC |
Initial release | 7 December 2006; 16 years ago |
Latest release |
4th edition |
Type of format | Document file format |
Extended from | XML, DOC, WordProcessingML |
Standard | ECMA-376, ISO/IEC 29500 |
Open format? | Yes[2] |
Website | ECMA-376, ISO/IEC 29500-1:2012 |
Filename extension |
.pptx, .pptm |
---|---|
Internet media type |
application/vnd. |
Developed by | Microsoft, Ecma, ISO, IEC |
Initial release | 7 December 2006; 16 years ago |
Latest release |
3rd edition |
Type of format | Presentation |
Extended from | XML, PPT |
Standard | ECMA-376, ISO/IEC 29500 |
Open format? | Yes |
Website | ECMA-376, ISO/IEC 29500:2008 |
Filename extension |
.xlsx, .xlsm |
---|---|
Internet media type |
application/vnd. |
Developed by | Microsoft, Ecma, ISO, IEC |
Initial release | 7 December 2006; 16 years ago (as Microsoft Open XML) |
Latest release |
3rd edition |
Type of format | Spreadsheet |
Extended from | XML, XLS, SpreadsheetML |
Standard | ECMA-376, ISO/IEC 29500 |
Open format? | Yes |
Website | ECMA-376, ISO/IEC 29500:2008 |
Office Open XML (also informally known as OOXML)[3] is a zipped, XML-based file format developed by Microsoft for representing spreadsheets, charts, presentations and word processing documents. Ecma International standardized the initial version as ECMA-376. ISO and IEC standardized later versions as ISO/IEC 29500.
Microsoft Office 2010 provides read support for ECMA-376, full support for ISO/IEC 29500 Transitional, and read support for ISO/IEC 29500 Strict.[4] Microsoft Office 2013 and later fully support ISO/IEC 29500 Strict,[5] but don’t use it as the default file format because of backwards compatibility concerns.[6]
Background[edit]
In 2000, Microsoft released an initial version of an XML-based format for Microsoft Excel, which was incorporated in Office XP. In 2002, a new file format for Microsoft Word followed.[7] The Excel and Word formats—known as the Microsoft Office XML formats—were later incorporated into the 2003 release of Microsoft Office.
Microsoft announced in November 2005 that it would co-sponsor standardization of the new version of their XML-based formats through Ecma International as «Office Open XML».[8][9] The presentation was made to Ecma by Microsoft’s Jean Paoli and Isabelle Valet-Harper.[10][11]
Standardization process[edit]
Microsoft submitted initial material to Ecma International Technical Committee TC45, where it was standardized to become ECMA-376, approved in December 2006.[12]
This standard was then fast-tracked in the Joint Technical Committee 1 of ISO and IEC. After initially failing to pass, an amended version of the format received the necessary votes for approval as an ISO/IEC Standard as the result of a JTC 1 fast-tracking standardization process that concluded in April 2008.[13] The resulting four-part International Standard (designated ISO/IEC 29500:2008) was published in November 2008[14] and can be downloaded from the ITTF.[15] A technically equivalent set of texts is published by Ecma as ECMA-376 Office Open XML File Formats—2nd edition (December 2008); they can be downloaded from their web site.[16]
The ISO/IEC standardization of Office Open XML was controversial and embittered,[17] with much discussion both about the specification and about the standardization process.[18] According to InfoWorld, «OOXML was opposed by many on grounds it was unneeded, as software makers could use OpenDocument Format (ODF), a less complicated office software format that was already an international standard.»[17] The same InfoWorld article reported that IBM (which supports the ODF format) threatened to leave standards bodies that it said allow dominant corporations like Microsoft to wield undue influence. The article further says that Microsoft was accused of co-opting the standardization process by leaning on countries to ensure that it got enough votes at the ISO/IEC for Office Open XML to pass, although it does not specify exactly who accused Microsoft.[17]
Licensing[edit]
Under the Ecma International code of conduct in patent matters,[19] participating and approving member organizations of ECMA are required to make available their patent rights on a reasonable and non-discriminatory (RAND) basis.
Holders of patents which concern ISO/IEC International Standards may agree to a standardized license governing the terms under which such patents may be licensed, in accord with the ISO/IEC/ITU common patent policy.[20]
Microsoft, the main contributor to the standard, provided a covenant not to sue[21] for its patent licensing. The covenant received a mixed reception, with some like the Groklaw blog criticizing it,[22] and others such as Lawrence Rosen, (an attorney and lecturer at Stanford Law School), endorsing it.[23]
Microsoft has added the format to their Open Specification Promise[24] in which
Microsoft irrevocably promises not to assert any Microsoft Necessary Claims against you for making, using, selling, offering for sale, importing or distributing any implementation to the extent it conforms to a Covered Specification […]
This is limited to applications which do not deviate from the ISO/IEC 29500:2008 or Ecma-376 standard and to parties that do not «file, maintain or voluntarily participate in a patent infringement lawsuit against a Microsoft implementation of such Covered Specification».[25][26]
The Open Specification Promise was included in documents submitted to ISO/IEC in support of the ECMA-376 fast-track submission.[27]
Ecma International asserted that, «The OSP enables both open source and commercial software to implement [the specification]».[28]
Versions[edit]
The Office Open XML specification exists in several versions.
ECMA-376 1st edition (2006)[edit]
The ECMA standard is structured in five parts to meet the needs of different audiences.[16]
- Part 1. Fundamentals
-
- Vocabulary, notational conventions and abbreviations
- Summary of primary and supporting markup languages
- Conformance conditions and interoperability guidelines
- Constraints within the Open Packaging Conventions that apply to each document type
- Part 2. Open Packaging Conventions
-
- The Open Packaging Conventions (OPC), for the package model and physical package, is defined and used by various document types in various applications from multiple vendors.
- It defines core properties, thumbnails, digital signatures, and authorizations & encryption capabilities for parts or all of the contents in the package.
- XML schemas for the OPC are declared as XML Schema Definitions (XSD) and (non-normatively) using RELAX NG (ISO/IEC 19757-2)
- Part 3. Primer
-
- Informative (non-normative) introduction to WordprocessingML, SpreadsheetML, PresentationML, DrawingML, VML and Shared MLs, providing context and illustrating elements through examples and diagrams
- Describes the custom XML data-storing facility within a package to support integration with business data
- Part 4. Markup Language Reference
-
- Contains the reference material for WordprocessingML, SpreadsheetML, PresentationML, DrawingML, Shared MLs and Custom XML Schema, defining every element and attribute including the element hierarchy (parent/child relationships)
- XML schemas for the markup languages are declared as XSD and (non-normatively) using RELAX NG
- Defines the custom XML data-storing facility
- Part 5. Markup Compatibility and Extensibility
-
- Describes extension facilities of OpenXML documents and specifies elements & attributes through which applications can operate across different extensions.
Later versions of the ECMA-376 standard are aligned and technically equivalent to the corresponding ISO standard.
ISO/IEC 29500:2008[edit]
The ISO/IEC standard is structured into four parts:[29] Parts 1, 2 and 3 are independent standards; for example, Part 2, specifying Open Packaging Conventions, is used by other file formats including XPS and Design Web Format. Part 4 is to be read as a modification to Part 1, which it requires.
A technically equivalent set of texts is also published by Ecma as ECMA-376 2nd edition (2008).
- Part 1. Fundamentals & Markup Language Reference
- Consisting of 5560 pages, this part contains:
- Conformance definitions
- Reference material for the XML document markup languages defined by the Standard
- XML schemas for the document markup languages declared using XSD and (non-normatively) RELAX NG
- Defines the foreign markup facilities
- Part 2. Open Packaging Conventions
- Consisting of 129 pages, this part contains:
- A description of the Open Packaging Conventions (package model, physical package)
- Core properties, thumbnails and digital signatures
- XML schemas for the OPC are declared using XSD and (non-normatively) RELAX NG
- Part 3. Markup Compatibility and Extensibility
- Consisting of 40 pages, this part contains:
- A description of extensions: elements & attributes which define mechanisms allowing applications to specify alternative means of negotiating content
- Extensibility rules are expressed using NVDL
- Part 4. Transitional Migration Features
- Consisting of 1464 pages, this part contains:
- Legacy material such as compatibility settings and the graphics markup language VML
- A list of syntactic differences between this text and ECMA-376 1st Edition
The standard specifies two levels of document & application conformance, strict and transitional, for each of WordprocessingML, PresentationML and SpreadsheetML, and also specifies applications’ descriptions of base and full.
Compatibility between versions[edit]
The intent of the changes from ECMA-376 1st Edition to ISO/IEC 29500:2008 was that a valid ECMA-376 document would also be a valid ISO 29500 Transitional document;[30] however, at least one change introduced at the BRM—refusing to allow further values for xsd:boolean—had the effect of breaking backwards-compatibility for most documents.[31] A fix for this had been suggested to ISO/IEC JTC 1/SC 34/WG 4, and was approved in June 2009 as a recommendation for the first revision to Office Open XML.[32]
Applications capable of reading documents compliant to ECMA-376 Edition 1 would regard ISO/IEC 29500-4 Transitional documents containing ISO 8601 dates as corrupt.[33]
Application support[edit]
Some older versions of Microsoft Word and Microsoft Office are able to read and write .docx
files after installation of the free compatibility pack provided by Microsoft,[34] although some items, such as equations, are converted into images that cannot be edited.[35]
Starting with Microsoft Office 2007, the Office Open XML file formats have become the default file format[36] of Microsoft Office.[37][38] However, due to the changes introduced in the Office Open XML standard, Office 2007 is not wholly in compliance with ISO/IEC 29500:2008.[39]
Office 2010 includes support for opening documents of the ISO/IEC 29500:2008-compliant version of Office Open XML, but it can only save documents conforming to the transitional, not the strict, schemas of the specification.[40][41] Note that the intent of the ISO/IEC is to allow the removal of the transitional variant from the ISO/IEC 29500 standard.[41]
The ability to read and write Office Open XML format is, however, not limited to Microsoft Office; other office products are also able to read & write this format:
- Collabora Online for Online, Mobile and Desktop apps are able to open and save Office Open XML files.[42]
- SoftMaker Office 2010 is able to read and write
DOCX
andXLSX
files in its word processor & spreadsheet applications. - LibreOffice is able to open and save Office Open XML files.[43]
- Apache OpenOffice from version 3.0 can import Office Open XML files but not save them.[44] Version 3.2 improved this feature with read support even for password-protected Office Open XML files.[45][46][47]
- The Go-oo fork of OpenOffice could also write OOXML files.
- KOffice from version 2.2 and later was able to import OOXML files.
- Calligra Suite is able to import Office Open XML files.
- NeoOffice, an OpenOffice.org fork for OS X can import, support to save OOXML started in 2017.
- OnlyOffice, Online and Desktop editors compatible with OOXML and OpenDocument files
Other office products that offer import support for the Office Open XML formats include:
- TextEdit (included with macOS)
- iWork
- IBM Lotus Notes
- Abiword
- Gnumeric
- WordPerfect
- WPS Office
- Google Docs
- SoftMaker FreeOffice
See also[edit]
- Comparison of document markup languages
- List of document markup languages
- Microsoft Office password protection
- Standardization of Office Open XML
References[edit]
- ^ a b c «Register file extensions on third party servers». docs.microsoft.com. Microsoft. Retrieved 2009-09-04.
- ^ Klaus-Peter Eckert; Jan Henrik Ziesing; Ucheoma Ishionwu. «Document Interoperability: Open Document Format and Office Open XML» (PDF). Fraunhofer Verlag. p. 90.
- ^ «The Document Foundation, LibreOffice and OOXML». The Document Foundation. Retrieved 2016-03-22.
- ^ «Overview of the XML file formats in Office 2010». Office 2010 Resource Kit. Microsoft. 5 August 2011.
- ^ «XML file name extension reference for Office 2013». Office 2013 Resource Kit. Microsoft. 26 December 2016.
- ^ «XLSX Strict (Office Open XML), ISO 29500-1:2008-2016». Library of Congress. Retrieved 2018-09-09.
- ^ Brian Jones (2007-01-25). «History of office XML formats (1998–2006)». MSDN blogs. Retrieved 2020-12-31.
{{cite web}}
: CS1 maint: url-status (link) - ^ «Microsoft Co-Sponsors Submission of Office Open XML Document Formats to Ecma International for Standardization». Microsoft. 2005-11-21.
- ^ Casson and Ryan, Open Standards, Open Source Adoption in the Public Sector, and Their Relationship to Microsoft’s Market Dominance
- ^ Microsoft hands over Office XML specs to Ecma
- ^ «Slides presented by the TC45 committee to Ecma International». Archived from the original on 2011-10-21. Retrieved 2011-06-08.
- ^ «Ecma International approves Office Open XML standard». Ecma International. 2006-12-07.
- ^ «ISO/IEC DIS 29500 receives necessary votes for approval as an International Standard». ISO. 2008-04-02.
- ^ ISO/IEC (2008-11-18). «Publication of ISO/IEC 29500:2008, Information technology—Office Open XML formats». ISO. Retrieved 2008-11-19.
- ^ «Freely Available Standards». ITTF (ISO/IEC). 2008-11-18. Archived from the original on 2018-10-26. Retrieved 2008-11-19.
- ^ a b «Standard ECMA-376». Ecma-international.org. Retrieved 2009-05-19.
- ^ a b c Kirk, Jeremy (19 November 2008). «ISO publishes Office Open XML specification». InfoWorld. Retrieved 12 June 2010.
- ^ «Norwegian standards body implodes over OOXML controversy». Ars Technica. 3 October 2008.
- ^ «Code of Conduct in Patent Matters». Ecma International.
- ^ «ISO/IEC/ITU common patent policy».
- ^ «Microsoft’s Open Specification Promise Eases Web Services Patent Concerns». September 12, 2006. Retrieved 2015-04-18.
- ^ «2 Escape Hatches in MS’s Covenant Not to Sue». Groklaw. December 4, 2005. Archived from the original on 9 Apr 2016.
- ^ Berlind, David (November 28, 2005). «Top open source lawyer blesses new terms on Microsoft’s XML file format». ZDNet. Retrieved 2007-01-27.
- ^ «Microsoft Open Specification Promise». Microsoft. 2007-02-15. Retrieved 2015-04-18.
- ^ «Ecma formal publications». Ecma International.
Ecma Standards and Technical Reports are made available to all interested persons or organizations, free of charge and licensing restrictions
- ^ «Microsoft Open Specification Promise». Microsoft.com.
- ^ «Licensing conditions that Microsoft offers for Office Open XML». Jtc1sc34.org. 2006-12-20. Archived from the original on April 23, 2008. Retrieved 2009-05-19.
- ^ «Microsoft Word — Responses to Comments and Perceived Contradictions.doc» (PDF). Retrieved 2009-09-16.
- ^ «ISO search for «29500»«. International Organization for Standardization. 2009-06-05.
- ^ «Re-introducing on/off-values to ST-OnOff in OOXML Part 4». Retrieved 2009-09-29.
- ^ «OOXML and Office 2007 Conformance: a Smoke Test». Archived from the original on 2010-04-28. Retrieved 2009-09-29.
- ^ «Minutes of the Copenhagen Meeting of ISO/IEC JTC1/SC34/WG4» (PDF). 2009-06-22. Archived from the original (PDF) on 2014-05-12. Retrieved 2009-09-29. page 15
- ^ «ISO/IEC 29500-4:2008/Draft Amd2:2011 — Draft — Information technology — Document description and processing languages — Office Open XML File Formats — Part 4: Transitional Migration Features — AMENDMENT 2». 2011-03-02. Archived from the original (PDF) on 2014-05-12. Retrieved 2011-04-04.
- ^ «Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats (Version 3)». Microsoft. 2007-06-18. Retrieved 2018-06-23.
- ^ Open a Word 2007 document in an earlier version of Word — Word — Office.com. Office.microsoft.com. Retrieved on 2013-07-17.
- ^ «Microsoft Expands List of Formats Supported in Microsoft Office». Microsoft. Retrieved 2008-05-21.
- ^ «Microsoft’s future lies somewhere beyond the Vista by Evansville Courier & Press». Courierpress.com. Archived from the original on 2014-07-10. Retrieved 2009-05-19.
- ^ «Rivals Set Their Sights on Microsoft Office: Can They Topple the Giant? — Knowledge@Wharton». Knowledge.wharton.upenn.edu. Retrieved 2009-05-19.
- ^ Andy Updegrove (21 May 2008). «Microsoft Office 2007 to Support ODF — and not OOXML». ConsortiumInfo.org. Retrieved 2009-05-19.
- ^ «ISO OOXML convener: Microsoft’s format «heading for failure»«. Ars Technica. 2 April 2010.
- ^ a b Brown, Alex (31 March 2010). «Microsoft Fails the Standards Test». Where is an end of it?. Alex Brown’s weblog. Retrieved 23 June 2018.
- ^ «Collabora Online 6.4.0-released». CollaboraOffice. 2 November 2020.
{{cite web}}
: CS1 maint: url-status (link) - ^ «LibreOffice OOXML». Retrieved 22 March 2012.
- ^ «OpenOffice.org 3.0 New Features». 2008-10-13. Retrieved 2009-10-24.
- ^ «OpenOffice.org 3.2 New Features». 2010. Retrieved 2010-11-13.
- ^ Scott Gilbertson (13 February 2010). «OpenOffice 3.2 — now with less Microsoft envy». The Register. Retrieved 18 Feb 2013.
the ability to open password-protected Word, Excel, and PowerPoint files
- ^ «3.2.0 (build OOO320_m12) — Release Notes». Retrieved 18 Feb 2013.
Import of password protected Microsoft Office XML files
Further reading[edit]
- «Standard ECMA-376: Office Open XML File Formats; 1st edition (December 2006) and 2nd edition (December 2008)». ECMA Standards. Ecma International. Retrieved 21 October 2010.
- «JTC 1/SC 34 — Document description and processing languages». ISO Standards. International Organization for Standardization. Retrieved 21 October 2010.
- «FAQs on ISO/IEC 29500». ISO News and Media. International Organization for Standardization. Retrieved 21 October 2010.
- Brown, Alex (31 March 2010). «Microsoft Fails the Standards Test». Where is an end of it?. Alex Brown’s weblog. Retrieved 23 June 2018.
- Lenz, Evan; McRae, Mary; St.Laurent, Simon (May 2004). «Chapter 2: The WordprocessingML Vocabulary» (PDF). Office 2003 XML: Integrating Office with the Rest of the World. O’Reilly Media. ISBN 978-0-596-00538-2.
- «How do I open Microsoft Office 2007 files?». OpenOffice.org Wiki. Oracle. 7 September 2009. Retrieved 21 October 2010.
- «Reference and sample documents». OpenOffice.org Ninja. 8 December 2008. Archived from the original on 24 October 2010. Retrieved 21 October 2010.
- Shah, Rajiv C.; Kesan, Jay P. (September 2008). «Lost in Translation: Interoperability Issues for Open Standards — ODF and OOXML as Examples». Social Science Research Network. Social Science Electronic Publishing, Inc. SSRN 1201708.
External links[edit]
Wikimedia Commons has media related to OOXML.
- ISO/IEC 29500 standards Archived 2018-10-26 at the Wayback Machine