在运用EXT.NET过程中尝试了很多导出EXCEL的结果都失败了。
干脆就用DEMO中的案列吧。建立一个EXCEL.XSL
<xsl:stylesheet version="1.0" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <xsl:template match="/"> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <xsl:apply-templates/> </Workbook> </xsl:template> <xsl:template match="/*"> <Worksheet> <xsl:attribute name="ss:Name"> <xsl:value-of select="local-name(/*/*)" /> </xsl:attribute> <Table x:FullColumns="1" x:FullRows="1"> <Row> <xsl:for-each select="*[position() = 1]/*"> <Cell> <Data ss:Type="String"> <xsl:value-of select="local-name()" /> </Data> </Cell> </xsl:for-each> </Row> <xsl:apply-templates/> </Table> </Worksheet> </xsl:template> <xsl:template match="/*/*"> <Row> <xsl:apply-templates/> </Row> </xsl:template> <xsl:template match="/*/*/*"> <Cell> <Data ss:Type="String"> <xsl:value-of select="." /> </Data> </Cell> </xsl:template> </xsl:stylesheet>
JS:
<script type="text/javascript"> var template = '<span style="color:{0};">{1}</span>'; var change = function (value) { return String.format(template, (value > 0) ? 'green' : 'red', value); } var pctChange = function (value) { return String.format(template, (value > 0) ? 'green' : 'red', value + '%'); } var exportData = function (format) { var store = GridPanel1.store; store.directEventConfig.isUpload = true; var records = store.reader.readRecords(store.proxy.data).records, values = []; for (i = 0; i < records.length; i++) { var obj = {}, dataR; if (store.reader.meta.id) { obj[store.reader.meta.id] = records[i].id; } dataR = Ext.apply(obj, records[i].data); if (!Ext.isEmptyObj(dataR)) { values.push(dataR); } } store.submitData(values); store.directEventConfig.isUpload = false; }; </script>
后台代码:
protected void Store1_Submit(object sender, StoreSubmitDataEventArgs e) { string format = "yyyyMMddhhss"; string name = "PO_Planning" + System.DateTime.Now.ToString(format) + ".xls"; XmlNode xml = e.Xml; this.Response.Clear(); this.Response.ContentType = "application/vnd.ms-excel"; this.Response.AddHeader("Content-Disposition", "attachment; filename="+name); XslCompiledTransform xtExcel = new XslCompiledTransform(); xtExcel.Load(Server.MapPath("Excel.xsl")); xtExcel.Transform(xml, null, Response.OutputStream); this.Response.End(); }
调用:
<ext:Button ID="btnxls" runat="server" Text="导出Excel" Icon="PageExcel"> <Listeners> <Click Handler="exportData('xls');" /> </Listeners> </ext:Button>