精华内容
下载资源
问答
  • OPENXML

    2012-12-25 10:37:42
    这几天一直在学习SQLSERVER2008,希望能把自己学到的一点东西整理出来,供自己没事的时候翻阅,如果也能偶尔照顾到某位程序员,那就更nice。...语句或者函数:for xml,和openxml。这两个执行的功能

        这几天一直在学习SQLSERVER2008,希望能把自己学到的一点东西整理出来,供自己没事的时候翻阅,如果也能偶尔照顾到某位程序员,那就更nice。

       XML作为数据传输一个非常优秀的应用,越来越受到业界的追捧。我们看到sqlserver从2000开始一直在增强其对xml的性能。在sqlserver2008中,有两个很重要的

    语句或者函数:for xml,和openxml。这两个执行的功能却是刚好相反。For Xml 是将库中行集数据以XML形式展开,而openxml则是将XML形式的数据以传统的数据库

    查询数据形式表现出来。

        OPENXML:Because openxml is a rowset provider,it can be used in the T-SQL statments in which rowset providers (table,view,opensetrow function can appear),so it provides a rowset view over the xml documents .

       最重要的功能就是说它能提供在XML文档上行集的视图。通俗讲就是通过XML,我们能得到一个行集的视图,然后在这个视图上为所欲为,干你想干的能干的事情。

    了解了性质以后,我们再来看下它的语法:

            OPENXML( idoc int [ in] , rowpattern nvarchar [ in ] , [ flags byte [ in ] ] )

            [ WITH ( SchemaDeclaration | TableName ) ]:

         默认的openxml有3个参数,第一个参数是个int型的,来自于输入,一般通过执行EXEC SP_XML_preparedocument

        得到,他是通过执行这个存储过程,获得一个被处理的XML文档你想要的数据。第二个参数也是来自输入,指的是你要处理的节点。它通过第一个参数找到数据

    中要处理的节点位置。第三个参数有四个值,分别是0,1,2,8.默认不写的话就为0,意思是以‘属性为中心’,通俗说就是处理你已经找到的节点的属性值。1也是这个意思。2表示以‘元素为中心’,通俗讲就是处理的节点子元素。所以这三个参数的意思是:第一个元素获得要处理的XML文档的内容,第二个节点获得内容中的节点,第三个内容是处理节点上的哪方面内容。

       with是可选项,也是指节点内容处理。有人会问那它跟上面的第三个属性有上面区别。区别在于第三个属性指定处理内容,with则具体指定了内容上的内容。

    比如<Order OrderID='1' OrderDate ='2001-09-03'>,如果第三个属性指定为1,即处理属性中心,在with中可以写成with( OrderID varchar(20))或者with(OrderId varchar(20),OrderDate getdate()),指定它要获得哪个具体属性值。

       如果在第三个属性指定为2,则在with中表示获得子元素。
       如果要获得父类节点上的元素,则应该在with中使用@,形如:with(OrderID varchar(20) ‘.../@OrderID’

       

    展开全文
  • openxml

    2019-10-04 02:23:07
    28-DC-2B-2C-BF-88-7A-E7-FC-AF-F3-05-A4-D2-67-2E-98-83-A3-B2-07-67-1E-B3-81-95-35-20-B0-B6-13-D2-DE-5A-0A-91-06-B7-9C-18-3C-8D-4C-4E-9F-E1-73-5F-FB-42-21-11-29-6A-A7-44-1D-0B-56-EE-CD-01-7A-47-94-...

    28-DC-2B-2C-BF-88-7A-E7-FC-AF-F3-05-A4-D2-67-2E-98-83-A3-B2-07-67-1E-B3-81-95-35-20-B0-B6-13-D2-DE-5A-0A-91-06-B7-9C-18-3C-8D-4C-4E-9F-E1-73-5F-FB-42-21-11-29-6A-A7-44-1D-0B-56-EE-CD-01-7A-47-94-AE-AC-47-F2-DC-34-26-8F-E8-C6-CB-FF-32-50-4E-F1-04-8B-7B-25-9F-42-29-32-0D-BE-97-FA-A6-45-9E-0F-53-2C-4E-0C-91-64-FD-4F-60-60-F0-48-D7-83-B0-29-4A-C7-B6-FD-A9-15-1C-0A-8D-D6-39-1A-45-0D-11

     

    try
    {
    OpenXmlValidator validator = new OpenXmlValidator();
    int count = 0;
    foreach (ValidationErrorInfo error in validator.Validate(WordprocessingDocument.Open("d:\\考勤软件说明书.docx", true)))
    {
    count++;
    Console.WriteLine("Error " + count);
    Console.WriteLine("Description: " + error.Description);
    Console.WriteLine("Path: " + error.Path.XPath);
    Console.WriteLine("Part: " + error.Part.Uri);
    Console.WriteLine("-------------------------------------------");
    }
    Console.ReadKey();
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    Console.ReadKey();
    }

    转载于:https://www.cnblogs.com/adebayors/archive/2012/06/02/2531905.html

    展开全文
  • OPENXML

    2008-07-23 17:17:00
    OPENXML 通过 XML 文档提供行集视图。由于OPENXML 是行集提供程序,因此可在会出现行集提供程序(如表、视图或 OPENROWSET 函数)的 Transact-SQL 语句中使用 OPENXML。语法OPENXML(idoc int [in],rowpattern ...
     
    

    OPENXML 通过 XML 文档提供行集视图。由于OPENXML 是行集提供程序,因此可在会出现行集提供程序(如表、视图或 OPENROWSET 函数)的 Transact-SQL 语句中使用 OPENXML。

    语法

    OPENXML(idoc int [in],rowpattern nvarchar[in],[flags byte[in]])
    [WITH (SchemaDeclaration | TableName)]

    参数

    idoc

    是 XML 文档的内部表式法的文档句柄。通过调用 sp_xml_preparedocument 创建 XML 文档的内部表式法。

    rowpattern

    是 XPath 模式,用来标识要作为行处理的节点(这些节点在 XML 文档中,该文档的句柄由 idoc 参数传递)。

    flags

    表示应在 XML 数据和关系行集间使用映射以及应如何填充溢出列。flag 为可选输入参数,可以是下列值之一。

    字节值
    描述
    0 默认为以特性为中心的映射。
    1 使用以特性为中心的映射。
    在某些情况下,可以将它与 XML_ELEMENTS 组合使用。使用时首先应用以特性为中心的映射,然后对于所有仍未处理的列应用以元素为中心的映射。
    2 使用以元素为中心的映射。
    在某些情况下,可以将它与 XML_ATTRIBUTES 组合使用。使用时先应用以特性为中心的映射,然后对于所有仍未处理的列应用以元素为中心的映射。
    8 可与 XML_ATTRIBUTES 或 XML_ELEMENTS 组合使用(逻辑 OR)。
    在检索的上下文中,该标志指明不应将已消耗的数据复制到溢出属性 @mp:xmltext

    SchemaDeclaration

    是窗体的架构定义:
    ColName ColType [ColPattern | MetaProperty][, ColName ColType [ColPattern | MetaProperty]...]

    ColName
    是行集中的列名。
    ColType
    是行集中列的 SQL 数据类型。如果列类型不同于特性的基础 XML 数据类型,那么将发生类型压制。如果列的类型是 TIMESTAMP,则当从 OPENXML 行集中进行选择时,将忽略 XML 文档中现有的值并返回自动填充值。
    ColPattern
    是可选的通用 XPath 模式,它说明应如何将 XML 节点映射到列。如果没有指定 ColPattern,那么发生默认的映射(由 flags 指定的以特性为中心或以元素为中心的映射)。

    指定为 ColPattern 的 XPath 模式用于指定特殊的映射性质(如果发生以特性为中心和以元素为中心的映射),这些特殊的映射性质可以重写或增强由标志所指定的默认映射。

    指定为 ColPattern 的通用 XPath 模式也支持元属性。

    MetaProperty
    是由 OPENXML 提供的元属性之一。如果指定元属性,则该列包含元属性提供的信息。这些元属性使您得以析取 XML 节点的信息(如相对位置、命名空间信息),以提供比文本化表示法更详细的信息。

    TableName

    如果具有期望架构的表已经存在且不要求列模式,则为给定的表名(而不是 SchemaDeclaration)。

    通过使用 SchemaDeclaration 或者指定一个现有的 TableNameWITH 子句提供一种行集格式(根据需要还提供其它映射信息)。如果没有指定可选的 WITH 子句,那么以 edge table 格式返回结果。边缘表在单个表中表示 XML 文档的细密结构(例如,元素/特性名、文档层次结构、命名空间、PI 等)。

    下表描述边缘表的结构。

    列名 数据类型 描述
    id bigint 是文档节点的唯一 ID。

    根元素的 ID 值为 0。保留负 ID 值。

    parentid bigint 标识节点的父节点。此 ID 所标识的父节点不一定是父元素,而是取决于此 ID 所标识节点的子节点的 NodeType。例如,如果节点是文本节点,则其父节点可能是特性节点。

    如果节点位于 XML 文档的顶层,则其 ParentID 为 NULL。

    nodetype int 标识节点类型。是对应于 XML DOM 节点类型编号的整数(有关节点信息,请参见 DOM)。

    三种节点类型是:

    1 = 元素节点
    2 = 特性节点
    3 = 文本节点

    localname nvarchar 给出元素或特性的本地名称。如果 DOM 对象没有名称则为 NULL。
    prefix nvarchar 是节点名称的命名空间前缀。
    namespaceuri nvarchar 是节点的命名空间 URI。如果值是 NULL,则命名空间不存在。
    datatype nvarchar 是元素或特性行的实际数据类型,否则是 NULL。从内嵌 DTD 中或从内嵌架构中推断数据类型。
    prev bigint 是前一个兄弟元素的 XML ID。如果前面没有兄弟元素则为 NULL。
    text ntext 包含文本格式的特性值或元素内容(如果边缘表项不需要值则为 NULL)。

    示例
    A.使用带有 OPENXML 的 SELECT 语句。

    下面的示例使用 sp_xml_preparedocument 创建 XML 图像的内部表示。然后对 XML 文档的内部表示法执行使用 OPENXML 行集提供程序的 SELECT 语句。

    flag 值设置为 1,表示以特性为中心的映射。因此,XML 特性映射到行集中的列。指定为 /ROOT/Customersrowpattern 标识要处理的 <Customers> 节点。

    没有指定可选的 colpattern(列模式),因为列名和 XML 特性名称匹配。

    OPENXML 行集提供程序创建了一个双列行集(CustomerID ContactName),SELECT 语句从该行集中检索必要的列(在本例中检索所有的列)。

    DECLARE @idoc int
    DECLARE @doc varchar(1000)
    SET @doc ='
    <ROOT>
    <Customer CustomerID="VINET" ContactName="Paul Henriot">
       <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
          <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
          <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
       </Order>
    </Customer>
    <Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
       <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
          <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
       </Order>
    </Customer>
    </ROOT>'
    --Create an internal representation of the XML document.
    EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
    -- Execute a SELECT statement that uses the OPENXML rowset provider.
    SELECT    *
    FROM       OPENXML (@idoc, '/ROOT/Customer',1)
                WITH (CustomerID  varchar(10),
                      ContactName varchar(20))
    

    下面是结果集:

    CustomerID ContactName          
    ---------- -------------------- 
    VINET      Paul Henriot
    LILAS      Carlos Gonzlez
    

    如果将 flags 设置为 2(表示以元素为中心的映射)并执行相同的 SELECT 语句,由于 <Customers> 元素没有任何子元素,则对于 XML 文档中两个 Customer 的 CustomerIDContactName 的值都作为 NULL 返回。

    下面是结果集:

    CustomerID ContactName
    ---------- -----------
    NULL       NULL
    NULL       NULL
    
    B. 为列和 XML 特性之间的映射指定 ColPattern

    下面的查询从 XML 文档返回客户 ID、订单日期、产品 ID 和数量等特性。rowpattern 标识 <OrderDetail> 元素。ProductIDQuantity 是 <OrderDetails> 元素的特性。而 CustomerIDOrderDate 是父元素 (<Orders>) 的特性。

    指定可选的 ColPattern,表示:

    • 行集中的 OrderIDCustomerIDOrderDate 列映射到 XML 文档中 rowpattern 所标识节点的父节点的特性。

    • 行集中的 ProdID 列映射到 ProductID 特性,而行集中的 Qty 列映射到 rowpattern 所标识节点的 Quantity 特性。

    尽管以元素为中心的映射由 flag 参数指定,但 ColPattern 中指定的映射重写该映射。

    declare @idoc int
    declare @doc varchar(1000)
    set @doc ='
    <ROOT>
    <Customer CustomerID="VINET" ContactName="Paul Henriot">
       <Order OrderID="10248" CustomerID="VINET" EmployeeID="5" 
               OrderDate="1996-07-04T00:00:00">
          <OrderDetail ProductID="11" Quantity="12"/>
          <OrderDetail ProductID="42" Quantity="10"/>
       </Order>
    </Customer>
    <Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
       <Order OrderID="10283" CustomerID="LILAS" EmployeeID="3" 
               OrderDate="1996-08-16T00:00:00">
          <OrderDetail ProductID="72" Quantity="3"/>
       </Order>
    </Customer>
    </ROOT>'
    --Create an internal representation of the XML document.
    exec sp_xml_preparedocument @idoc OUTPUT, @doc
    -- SELECT stmt using OPENXML rowset provider
    SELECT *
    FROM   OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
             WITH (OrderID       int         '../@OrderID',
                   CustomerID  varchar(10) '../@CustomerID',
                   OrderDate   datetime    '../@OrderDate',
                   ProdID      int         '@ProductID',
                   Qty         int         '@Quantity')
    

    结果如下:

    OrderID CustomerID           OrderDate                 ProdID    Qty

    ------------------------------------------------------------------------

    10248      VINET       1996-07-04 00:00:00.000   11      12
    10248      VINET       1996-07-04 00:00:00.000   42      10
    10283      LILAS       1996-08-16 00:00:00.000   72      3
    
    C. 获得边缘表格式的结果

    在下例中,在 OPENXML 语句中未指定 WITH 子句。因此,OPENXML 所生成的行集具有边缘表格式。SELECT 语句返回边缘表中的所有列。

    下例中的示例 XML 文档由 <Customer>、<Order> 和 <Order_0020_Details> 元素组成。

    首先调用 sp_xml_preparedocument 以获得文档句柄。此文档句柄传递到 OPENXML。

    在 OPENXML 语句中

    • rowpattern (/ROOT/Customer) 标识要处理的 <Customer> 节点。

    • 未提供 WITH 子句。因此 OPENXML 以边缘表格式返回行集。

    最后 SELECT 语句检索边缘表中的所有列。

    declare @idoc int
    declare @doc varchar(1000)
    set @doc ='
    <ROOT>
    <Customers CustomerID="VINET" ContactName="Paul Henriot">
       <Orders CustomerID="VINET" EmployeeID="5" OrderDate=
               "1996-07-04T00:00:00">
          <Order_x0020_Details OrderID="10248" ProductID="11" Quantity="12"/>
          <Order_x0020_Details OrderID="10248" ProductID="42" Quantity="10"/>
       </Orders>
    </Customers>
    <Customers CustomerID="LILAS" ContactName="Carlos Gonzlez">
       <Orders CustomerID="LILAS" EmployeeID="3" OrderDate=
               "1996-08-16T00:00:00">
          <Order_x0020_Details OrderID="10283" ProductID="72" Quantity="3"/>
       </Orders>
    </Customers>
    </ROOT>'
    --Create an internal representation of the XML document.
    exec sp_xml_preparedocument @idoc OUTPUT, @doc
    -- SELECT statement using OPENXML rowset provider
    SELECT    *
    FROM       OPENXML (@idoc, '/ROOT/Customers')
    EXEC sp_xml_removedocument @idoc

    结果作为边缘表返回。

    展开全文
  • Openxml

    千次阅读 2009-08-04 15:30:00
    最近在学习创建word的一些方法,发现了Openxml,便做了一些尝试。如创建指定格式的页眉页脚,添加表格等。仅为简单尝试,代码可能不够规范,后面做项目要用它时,再细细考究吧。 一、简单创建word文档using System;...

          最近在学习创建word的一些方法,发现了Openxml,便做了一些尝试。如创建指定格式的页眉页脚,添加表格等。仅为简单尝试,代码可能不够规范,后面做项目要用它时,再细细考究吧。

     

         一、简单创建word文档

     

       二、添加表格

     

    三、创建页脚

     

    四、创建页眉

     

    五、创建一些样式

    展开全文
  • OpenXML

    2006-02-23 09:05:59
    开源的XML DOM实现for Delphi-----------------Date of release: 2005-09-25The Open XML Utility Library provides a wide range of methods, components and foundation classes. It includes nine units of the ...
  • OpenXML SDNTool

    2018-11-08 16:20:42
    方便查看 Word OPenxml;便于设计Word 、PDF、Xml 等文件;
  • Openxml白皮书译文

    2018-08-21 16:08:31
    Openxml白皮书译文;基于Openxml库进行开发,可借鉴本文内容...
  • OpenXML操作Word

    2020-07-17 10:05:13
    OpenXML操作Word,该资源为C#控制台程序,包含Word添加文字和文字属性,样式、排列效果和图片
  • OpenXML.zip

    2020-06-22 11:22:27
    OpenXMLSDK代码生成工具安装包,并有OpenXML2个必要DLL引用,亲测可用,自己项目中应用的,后期会免费释放个人开发经验及代码,如有需要可进行关注。
  • VS Code的OpenXML Explorer 在树浏览器中显示OpenXml(* .pptx,*。docx,*。xlsx)文件的内容 特征 要求 .NET 5.0运行时-https: 学分 执照
  • OpenXML操作word

    2018-11-12 14:27:41
    OpenXML操作word,根据书签位置插入文字,图片,表格。VS2012源码。
  • OpenXML(OOXML)是微软在Office 2007中提出的一种新的文档格式,Office 2007中的Word、Excel、PowerPoint默认均采用OpenXML格式 。OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势:1.相对于MS ...
  • 我使用OpenXML SDK 2.5编写了一个Word文档,当我在MS Office中预览时,这些文档会给出预期的外观和格式 .现在我需要将此文档转换为HTML文档,我在OpenXML Powertools中了解了 HtmlConverter ,并尝试使用它,使用...
  • OpenXML SDK

    2011-07-07 18:00:38
    OpenXML SDK,知道吗?微软的office2007系列,全是基于openxml的,比如你常见的docx pptx xlsx....
  • OpenXml SDK 2.5

    2018-04-03 14:49:48
    OpenXml SDK 2.5(Office 源码工具) 微软提供了 Word 文件结构的一个简单说明,并提供了一个简单的示例来生成一个基本的 Word 文档
  • Using OPENXML

    2019-09-25 21:20:12
    来自:http://msdn.microsoft.com/en-us/library/aa226522(SQL.80).aspxhe examples in this topic show how OPENXML is used in creating a rowset view of an XML document. For information about the syntax...
  • OpenXml入门

    2019-09-21 22:33:43
    OpenXml简介: Open XML标准的简单介绍:Ecma Office Open XML(“Open XML”)是针对字处理文档、演示文稿和电子表格的国际化开放标准,可免费供多个应用程序在多个平台上实现。Microsoft Office(2007、2003、XP...
  • using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using OpenXML.Model; using System; using System.Collections.Generic; namespace ...
  • DocumentFormat.OpenXml.zip

    2019-06-24 23:39:52
    DocumentFormat.OpenXml.zip 可以下载看一下如何操作openxml
  • 这个是openxml相关知识。 <w:p> <!--表示一个段落--> <w:val > <!--表示一个值--> <w:r> <!--表示一个样式串,指明它包括的文本的显示样式,表示一个特定的文本格式--> <w:...
  • Word_openXML.zip

    2020-11-24 14:22:43
    openXML操作Word,用程序生成需要的Word文档。
  • OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势:1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩溃的问题.2.对比填满一张30多页的WORD来说(包含图,表等),用COM组件来生成会占用20秒...
  • 主要介绍了OpenXml读写Excel代码分享,大家参考使用
  • c# openxml C#概念 (C# CONCEPTS) 本文演示了如何以编程方式在C#控制台应用程序中使用Excel Document。 (The articles demonstrate how to play with Excel Document in C# Console Application programmatically...
  • OpenXml读取word内容注意事项1、使用OpenXml读取word内容,word后缀必须是".docx";如果word后缀是".doc"需要转成".docx"后,才可以读取;2、需要引入相关dll;"WindowsBase.dll"、“DocumentFormat.OpenXml.dll”;3...
  • openxml整理 C#

    2012-03-11 22:52:48
    openxml整理 C#

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,162
精华内容 864
关键字:

openxml