您的位置:首页 > 其它

Ext.Net 1.x_Ext.Net.GridPanel之导出EXCEL

2011-12-12 08:13 344 查看
在运用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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: