Originariamente inviato da optime
da qualche cosa nel codice
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>