我想在不使用对象模型的情况下创建一个单词2007文档.所以我更喜欢使用开放的xml格式创建它.到目前为止,我已经能够创建该文档.现在我想在其中添加一个内容控件并将其映射到xml.任何人都可以指导我相同的???
是否有API(最好是C#)来访问用MS Word公式编辑器创建的方程的对象模型?我正在寻找像图表对象这样的API来访问Excel中的图表属性.
任何帮助将非常感激.
我有以下(高度简化的)XML文档,我使用OPENXML函数读入我的数据库:
<root>
<row>
<bar>123</bar>
</row>
<row>
<bar>0</bar>
</row>
<row>
<bar></bar>
</row>
</root>
Run Code Online (Sandbox Code Playgroud)
我像这样导入数据库:
insert into [Foo]
([bar])
select
ds.[bar]
from openxml(@xmlHandle, 'root/row', 2)
with ([bar] int) ds
Run Code Online (Sandbox Code Playgroud)
问题是OPENXML将int数据类型的空字段转换为零,因此这将插入到我的表中:
bar
----
123
0
0
Run Code Online (Sandbox Code Playgroud)
我想要插入到我的表中的是:
bar
----
123
0
NULL
Run Code Online (Sandbox Code Playgroud)
如何让OPENXML函数将空字段视为NULL并且默认情况下不将其转换为零?
您建议了解哪些资源有关Microsoft的Open Office格式(Office 2007中引入的XML格式,不要与OpenOffice.org混淆),特别是对于.docxWord文件?(理想情况下,有大量样本和教程的.)
我有一个我的asp.net页面正在创建的文档,我需要将某些列的文本对齐到中心.我在openXML SDK中手动居中列后打开了文档但是反映的代码没有达到预期的结果.
这就是我如何设置这些列的自定义宽度,我想添加到此函数(方法,whatevs)中心文本的能力:
private static Column CreateColumnData(UInt32 StartColumnIndex, UInt32 EndColumnIndex, double ColumnWidth)
{
Column column;
column = new Column();
column.Min = StartColumnIndex;
column.Max = EndColumnIndex;
column.Width = ColumnWidth;
column.CustomWidth = true;
//the SDK says to add this next line to center the text but it doesn't work
column.Style = (UInt32Value)6U;
return column;
}
Run Code Online (Sandbox Code Playgroud)
我对另一种方式开放,但我认为解决方案必须非常简单,我似乎无法得到它.如果有人能提供帮助,那就太棒了.
注意:请记住我使用的是OpenXML,不会使用Microsoft.Office.Interop.Excel
我正在创建一个word文档
using (WordprocessingDocument myDoc = WordprocessingDocument.Create(@"c:\generate\export.docx", WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = myDoc.AddMainDocumentPart();
mainPart.Document = new Document();
var body = new Body();
var p = new Paragraph(
new ParagraphProperties(
new Justification()
{
Val = JustificationValues.Center
}
),
new Run(new Text("test"))
);
body.Append(p);
mainPart.Document.Append(body);
// Save changes to the main document part.
mainPart.Document.Save();
}
Run Code Online (Sandbox Code Playgroud)
如何将页面方向设置为横向
此代码生成Excel电子表格使用openxml包.请任何人告诉如何自动调整其列宽.
OpenXmlPackage.SpreadsheetDocument spreadsheetDocument = OpenXmlPackage.SpreadsheetDocument.Create(downloadFilePath, OpenXml.SpreadsheetDocumentType.Workbook);
// Add a WorkbookPart to the document.
OpenXmlPackage.WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
// Add a WorksheetPart to the WorkbookPart.
workbookpart.Workbook = new OpenXmlSpreadsheet.Workbook();
int numDates = datesObject.Length;
// Add Sheets to the Workbook.
OpenXmlSpreadsheet.Sheets sheets = new OpenXmlSpreadsheet.Sheets();
OpenXml.UInt32Value sheetId = 1;
OpenXmlPackage.WorksheetPart firstWorksheetPart = workbookpart.AddNewPart<OpenXmlPackage.WorksheetPart>();
firstWorksheetPart.Worksheet = new OpenXmlSpreadsheet.Worksheet(new OpenXmlSpreadsheet.SheetData());
// Append a new worksheet and associate it with the workbook.
OpenXmlSpreadsheet.Sheet firstSheet = new OpenXmlSpreadsheet.Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(firstWorksheetPart), SheetId = sheetId, Name …Run Code Online (Sandbox Code Playgroud) 这个想法很简单,但答案可能会变得复杂:
事实上,我可以检查字体大小的运行属性。
如果不存在,我需要检查应用于段落的样式以找到为字体大小定义的运行属性,然后是该样式的段落运行属性。
如果没有找到,我需要再次检查有关此样式所基于的样式的所有内容。
如果没有找到,我应该检查样式层次结构中的以下样式,然后继续直到达到默认样式。
我还需要检查上一段是否应用了样式。在这种情况下,应用的样式可以定义影响我正在处理的文本的下一段的样式。
如果没有样式影响我的段落,那么我需要查看样式部分的默认运行属性。之后,我应该查看同一部分中的默认段落属性。
如果什么都不适用,那么大小定义的责任就交给处理文档的应用程序。
我对吗?
我没有来自 OPenXML SDK 和/或 OpenXmlPowerTools 的任何帮助吗?
一个重要的方面是,除了文本字体大小之外,这个问题几乎扩展到任何段落或运行属性。
我的最终目标是根据格式确定一段文本是否是节标题(如heading1、heading2 等),但看起来很难得到像“一段文本的当前格式”这样简单的东西。为了让事情变得更难,我还需要处理(部分)编号,很多时候没有应用于段落的编号格式。
谢谢,
我有一个由 Excel 2007 创建的文档:
<fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4506" codeName="{B7FE6334-C1A2-E50D-BD3D-5F4D41BBC2E3}"/>
Run Code Online (Sandbox Code Playgroud)
...在字体定义中包含以下颜色xl/styles.xml:
<color indexed="81"/>
Run Code Online (Sandbox Code Playgroud)
我从ECMA标准中了解到<indexedColors>,xl/styles.xml如果有这样的集合,则此颜色索引指的是集合,否则指的是标准中显示的默认调色板。我的问题是这个文档不包含<indexedColors>元素,默认调色板只有66个条目,所以我不知道81指的是什么。还有其他人吗?
有趣的是,谷歌搜索color indexed="81"返回了一些包含相同内容的示例 OpenXML 片段,但没有解释。
有没有办法为一个段落存储额外的数据,在用户在 MS Word 中打开和保存文档后,这些数据会被保留下来。
为此,我一直在使用 CusotmXML,但事实证明这是不可能的,因为 MS-Word 从文档结构中删除了所有 CusotmXML 元素。
每个段落或表格都有一个 ID,我想将其“配对”到我的数据源。所以稍后当我再次阅读 docx 时,我可以识别文档中每个未更改的段落/表格的来源。
openxml ×10
c# ×5
ms-word ×5
openxml-sdk ×4
excel ×2
asp.net ×1
colors ×1
ecma ×1
null ×1
office-2007 ×1
omml ×1
spreadsheet ×1
sql-server ×1
standards ×1
t-sql ×1
xml ×1