Originariamente inviato da orcim
Allora posto il codice:
Pagina ASP:
codice:<% Session.Timeout = 200 Response.Buffer = True filename = "_output.xml" Set fso = Server.CreateObject("Scripting.FileSystemObject") if fso.FileExists(Server.MapPath("_XML/" & filename & "")) then fso.DeleteFile(Server.MapPath("_XML/" & filename & "")) end if Set fso = Nothing Set xmlDoc = CreateObject("MSXML2.DOMDocument.4.0") Set xslDoc = CreateObject("MSXML2.DOMDocument.4.0") %> <% sql = "SELECT * FROM tbl_c" Set Rs = CreateObject("ADODB.Recordset") Rs.Open SQL, objconn if not Rs.eof then Rs.Save xmlDoc, 1 xmlDoc.Save Server.MapPath("_XML/" & filename & "") end if Rs.Close() Set Rs = Nothing %> <% Set oDOM = CreateObject("MSXML2.DOMDocument.4.0") oDOM.async = False oDOM.Load Server.Mappath("_XML/" & filename & "") Set oXSL = CreateObject("MSXML2.DOMDocument.4.0") oXSL.async = False oXSL.Load Server.Mappath("/_inc/Trasform_csv.xsl") strTransform = oDOM.transformNode(oXSL) Set fso = CreateObject("Scripting.FileSystemObject") strPath = Server.Mappath("_XML/_output.xls") Session("FileName") = Server.Mappath("_XML/_output.xls") Set file = fso.opentextfile(strPath, 2, True) file.write strTransform file.Close() Set file = Nothing Set fso = Nothing Set oDOM = Nothing Set oXML = Nothing Set oXSL = Nothing %>
File XSL per la trasformazione da XML in XLS:
codice:<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> <xsl:output omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:for-each select="/xml/s:Schema/s:ElementType/s:AttributeType"> <xsl:value-of select="@name"/> <xsl:choose> <xsl:when test="position()!=last()"> <xsl:text>	</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>
</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:for-each select="/xml/rs:data/z:row"> <xsl:variable name="row" select="."/> <xsl:for-each select="/xml/s:Schema/s:ElementType/s:AttributeType"> <xsl:variable name="columnName" select="@name"/> <xsl:value-of select="$row/@*[name()=$columnName]"/> <xsl:if test="position()!=last()"> <xsl:text>	</xsl:text> </xsl:if> </xsl:for-each> <xsl:text>
</xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>