Jak pomocí jazyka Visual Basic nebo ASP k vytvoření formátu Tabulka XML pro aplikaci Excel 2002 a Excel 2003

Souhrn

Aplikace Microsoft Excel 2002 a Microsoft Office Excel 2003 podporuje formát XML, které mohou jak načíst a uložit sešity (nebo tabulky XML). Pomocí tohoto formátu Tabulka XML, můžete vytvořit více listů, formátované sešity do aplikace Excel bez použití automatizace. Tento přístup může být žádoucí, pokud potřebujete vytvořit sešit aplikace Excel, ale není možné k automatizaci aplikace Excel (například na webový server nebo služba) nebo aplikace Excel není nainstalována v systému, kde je spuštěn kód.

Tento článek ukazuje, jak lze vytvořit šablonu XML, který při použití transformace Extensible Stylesheet Language (XSL), generuje formátovaný sešit, který lze otevřít přímo v aplikaci Excel. Transformaci XML není prokázáno pro stránky ASP (Active Server) a Visual Basic. Pokud jde o ukázku kódu jazyka Visual Basic data tabulky tabulkového kalkulátoru generováno výhradně s XML/XSL; minimální automatizace umožňuje otevřít výsledky v aplikaci Excel.

Poznámka: Vzorku popsané v tomto článku je k dispozici ke stažení; Pokyny ke stažení naleznete v části stažení na konci tohoto článku.

Další informace

Vytvořit šablonu XML v sešitu

  1. Vytvořte novou složku C:\ExcelXML.
  2. V aplikaci Excel spusťte nový sešit. Přidejte následující data do buněk a1: F2 v uvedených buňkách sešitu. Buňku F2 by měla být zadána jako vzorec.
    A1: Order ID    B1: Product ID   C1: Unit Price   D1: Quantity   E1: Discount  F1: Total
    A2: aaa B2: 111 C2: 222 D2: 333 E2: 0 F2: =C2*D2*(1-E2)
  3. V buňce F3 zadejte následující vzorec:
    =SUM(F$2:F2)
  4. Vyberte buňky A1:F1. V nabídce Formát klepněte na příkaz buňky. Použije tučné písmo, dolní okraj a pro stínování plnou barvou. Klepněte na tlačítko OK
  5. Vyberte sloupce A:F. v nabídce Formát , přejděte na příkaz sloupec a potom klepněte na příkaz Šířka. 15 pro novou šířku sloupce a klepněte na tlačítko OK. Sloupce a: f vybraný a v nabídce Formát klepněte na příkaz buňky. Na kartě Zarovnání vyberte Centrum ze seznamu vodorovné zarovnání a potom klepněte na tlačítko OK.
  6. Vyberte sloupce E. V nabídce Formát klepněte na příkaz buňky. Na kartě číslo klepněte na tlačítko Procento a zadejte 0 desetinných míst.
  7. Vyberte sloupec F. V nabídce Formát klepněte na příkaz buňky. Na kartě číslo klepněte na účtování a potom klepněte na tlačítko OK.
  8. Vyberte buňky A3:F3. V nabídce Formát klepněte na příkaz Výška řádku, zadejte 25a klepněte na tlačítko OK. A3:F3 vybraný a v nabídce Formát klepněte na příkaz buňky. Použijte horní ohraničení buněk a potom klepněte na tlačítko OK.
  9. V nabídce Nástroje klepněte na příkaz Možnosti. Na kartě zobrazení zrušte zaškrtnutí políčka mřížky a klepněte na tlačítko OK.
  10. Vyberte řádek 2. V nabídce okno klepněte na příkaz Ukotvit příčky.
  11. Vyberte buňky A1.
  12. V nabídce soubor klepněte na příkaz Uložit jako. Přejděte do složky C:\ExcelXML, který jste vytvořili a sešit uložit ve formátu Tabulka XML jako "Orders.xsl".

    Poznámka: do pole název souboru v dialogovém okně Uložit jako název souboru uzavřít do dvojitých uvozovek, aby příponou XML není přidán k názvu souboru.
  13. Ukončete aplikaci Excel.
  14. V libovolném textovém editoru, například programu Poznámkový blok otevřete Orders.xsl.
  15. Vložit následující mezi <? xml verze = "1.0"? > Značka a značka < sešit >:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/">
    <xsl:pi name="xml">version="1.0"</xsl:pi>

  16. Na konci velmi Orders.xsl přidejte následující dva řádky:
    </xsl:template></xsl:stylesheet>

  17. Vyhledejte následující sadu značek v Orders.xsl (tuto sadu značek představuje A2:F2 buněk v listu)
       <Row ss:Height="14.25">    <Cell><Data ss:Type="String">aaa</Data></Cell>
    <Cell><Data ss:Type="Number">111</Data></Cell>
    <Cell><Data ss:Type="Number">222</Data></Cell>
    <Cell><Data ss:Type="Number">333</Data></Cell>
    <Cell><Data ss:Type="Number">0</Data></Cell>
    <Cell ss:Formula="=RC[-3]*RC[-2]*1*(1-RC[-1])"><Data ss:Type="Number">73926</Data></Cell>
    </Row>

    a nahraďte následující kód XSL:
    <xsl:for-each select="xml/rs:data/z:row">   <Row ss:AutoFitHeight="0" ss:Height="13.5">
    <Cell><Data ss:Type="String"><xsl:value-of select="@OrderID"/></Data></Cell>
    <Cell><Data ss:Type="Number"><xsl:value-of select="@ProductID"/></Data></Cell>
    <Cell><Data ss:Type="Number"><xsl:value-of select="@UnitPrice"/></Data></Cell>
    <Cell><Data ss:Type="Number"><xsl:value-of select="@Quantity"/></Data></Cell>
    <Cell><Data ss:Type="Number"><xsl:value-of select="@Discount"/></Data></Cell>
    <Cell ss:Formula="=RC[-3]*RC[-2]*(1-RC[-1])"><Data ss:Type="Number">0</Data></Cell>
    </Row>
    </xsl:for-each>

  18. Orders.xsl uložit změny a zavřete soubor.

Pomocí programu Visual Basic převést sadu záznamů ADO trvalé XML do formátu Tabulka XML

  1. V jazyce Visual Basic vytvořte nový projekt Standardní EXE.
  2. V nabídce projekt klepněte na odkazy. Vyberte typ knihovny Microsoft ActiveX Data Object 2.5 (nebo vyšší) a Microsoft XML 3.0.
  3. Přidat CommandButton Form1 a přidejte následující kód klepněte na tlačítko události:
        Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _                  "C:\program files\microsoft office\office10\samples\Northwind.mdb"
    Const sOutXML = "C:\ExcelXML\Orders.xml"
    Const sXSL = "C:\ExcelXML\Orders.xsl"

    'Retrieve an ADO recordset of the Orders Detail table in Northwind.
    Dim nRecords As Long, nFields As Long
    Dim rs As New ADODB.Recordset
    rs.Open "SELECT * FROM [Order Details]", sConn, adOpenStatic, adLockOptimistic

    'Persist the recordset to a new DOMDocument and store the record count.
    Dim oXML As New DOMDocument
    rs.Save oXML, adPersistXML
    nRecords = rs.RecordCount
    nFields = rs.Fields.Count
    rs.Close

    'Load the XSL (the workbook template with XSL directives) into a DOMDocument.
    Dim oXSL As New DOMDocument
    oXSL.Load sXSL

    'Transform the XML using the style sheet.
    Dim oResults As New DOMDocument
    oXML.transformNodeToObject oXSL, oResults

    If oXSL.parseError.errorCode <> 0 Then
    MsgBox "Parse Error: " & oResults.parseError.reason
    Else
    'Modify the ss:ExpandedRowCount attribute for the <table> node to
    'indicate the correct number of rows (count of records + 1 row for
    'the header + 1 row for the total).
    Dim oTable As MSXML2.IXMLDOMElement
    Set oTable = oResults.selectSingleNode("Workbook/Worksheet/Table")
    oTable.setAttribute "ss:ExpandedRowCount", nRecords + 2

    '***************************************
    'Save the results to a file.
    Open sOutXML For Output As #1
    Print #1, oResults.xml
    Close #1

    'Open the XML in Excel.
    Dim oExcel As Object
    Set oExcel = CreateObject("Excel.Application")
    oExcel.Workbooks.Open sOutXML
    oExcel.Visible = True
    oExcel.UserControl = True
    '***************************************
    End If

    Poznámka: V případě potřeby upravte připojení tak, aby obsahoval správné instalace cestu k ukázkové databázi Northwind aplikace Access řetězec (Const sConn).
  4. Stisknutím klávesy F5 spustit program.
  5. Klepněte na tlačítko na Form1. Ve vytvořené šablony sešitu aplikace Excel se zobrazí data z tabulky Podrobnosti objednávky v databázi Northwind.
Vzorku generuje tabulky XML a umožňuje automatizovat Excel pomocí metody Otevřít sešity kolekce open XML jako nový sešit. Jako alternativní přístup můžete přímo vložit kód XML do existujícího listu na určitou buňku. Pro ilustraci, nahraďte kód, který je obsažen mezi hvězdičky s následujícím:
        'Display the data in a workbook starting at cell B2.        Dim oExcel As Object, oBook As Object
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add
oBook.Worksheets(1).Range("B2").Resize(nRecords + 2, nFields + 1).Value(11) = _
oResults.xml 'Note: xlRangeValueXMLSpreadsheet=11
oExcel.Visible = True
oExcel.UserControl = True

Po provedení této změny, spusťte program znovu. Všimněte si, že tentokrát, tabulka XML data je vložen do nového sešitu počátkem v buňce B2 na prvním listu. Formáty data buňky a jsou použité v oblasti; však použití tohoto přístupu, nastavení specifické pro řádky, sloupce, listu a sešitu nebudou přeneseny.

Chcete-li transformovat sada záznamů ADO trvalé XML do formátu Tabulka XML pomocí prostředí ASP

  1. Vložte následující kód do programu Poznámkový blok. Uložte kód jako ExcelXML.asp ve virtuální kořenové složce webového serveru. Poznámka: Výchozí složky pro virtuální kořenový adresář je C:\inetpub\wwwroot.
    <%@ Language="vbscript"%>
    <%

    Const sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\program files\microsoft office\office10\samples\Northwind.mdb"
    Const sXSL = "C:\ExcelXML\Orders.xsl"

    Response.Buffer = True

    'Retrieve an ADO recordset of the Orders Detail table in Northwind.
    Dim rs, nRecords
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM [Order Details]", sConn, 3, 3

    'Persist the recordset to a new DOMDocument and store the record count.
    Dim oXML
    Set oXML = CreateObject("Microsoft.XMLDOM")
    rs.Save oXML, 1
    nRecords = rs.RecordCount
    rs.Close

    'Load the XSL (the workbook template with XSL directives) into a DOMDocument.
    Dim oXSL
    Set oXSL = CreateObject("Microsoft.XMLDOM")
    oXSL.Load sXSL

    'Transform the XML using the style sheet.
    Dim oResults
    Set oResults = CreateObject("Microsoft.XMLDOM")
    oXML.transformNodeToObject oXSL, oResults

    If oXSL.parseError.errorCode <> 0 Then
    Response.Write "Parse Error: " & oResults.parseError.reason
    Else

    'Modify the ss:ExpandedRowCount attribute for the <table> node in the XSL.
    Dim oTable
    Set oTable = oResults.selectSingleNode("Workbook/Worksheet/Table")
    oTable.setAttribute "ss:ExpandedRowCount", nRecords + 2

    'Return the resulting XML Spreadsheet for display in Excel.
    Response.ContentType = "application/vnd.ms-excel"
    Response.Charset = "ISO-8859-1"
    Response.Write oResults.XML
    Response.Flush

    End If

    %>

    Poznámka: V případě potřeby upravte připojení tak, aby obsahoval správné instalace cestu k ukázkové databázi Northwind aplikace Access řetězec (Const sConn).

  2. Spusťte aplikaci Internet Explorer a procházet http://YourWebServer/ExcelXML.asp, kde YourWebServer je název vašeho webového serveru. Ve vytvořené šablony sešitu aplikace Excel se zobrazí data z tabulky Podrobnosti objednávky v databázi Northwind.

Další poznámky

Následující funkce aplikace Excel nelze zachovat ve formátu Tabulka XML:
  • Grafy
  • Objekty OLE
  • Kreslení tvarů nebo automatických tvarů
  • Projekty v jazyce VBA
  • Skupina a přehled

Ke stažení

XMLSpread.exe obsahuje šablony stylů XML, projekt jazyka Visual Basic a skript ASP popsané v tomto článku.
Následující soubor je k dispozici pro stažení z Microsoft Download Center:
Download Stáhnout balíček Xmlsprd.exe. Datum vydání: 27. března 2001

Pro více informací o tom, jak stahovat soubory podpory společnosti Microsoft, klepněte na následující číslo článku v databázi Microsoft Knowledge Base:
119591 jak získat soubory podpory společnosti Microsoft ze serverů služeb online
Microsoft zkontroloval tento soubor na přítomnost virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici k datu, kdy byl soubor vydán. Soubor je uložen na zabezpečených serverech, které pomáhají zabránit neoprávněným změnám v souboru.

Odkazy

Další informace o ukládání ve formátu XML sady záznamů rozhraní ADO naleznete následujícím webu Microsoft Developer Network (MSDN):Další informace o vysílání obsahu MIME do aplikací Microsoft Office klepněte na následující čísla článku zobrazení v článcích znalostní báze Microsoft Knowledge Base:

266263 Chyba: Word 2000 a Excel 2000 zobrazují zdroj ASP při použití typu MIME k vysílání dat

199841 zobrazení ASP výsledků pomocí typů MIME aplikace Excel v aplikaci Internet Explorer

Jak 271572 formátování sešitu aplikace Excel při vysílání obsahu MIME

307021 jak přenést XML data do aplikace Microsoft Excel 2002 pomocí Visual Basic .NET

Vlastnosti

ID článku: 285891 - Poslední kontrola: 23. 1. 2017 - Revize: 1

Váš názor