手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >Coolite优化导出Excel文件实现代码
Coolite优化导出Excel文件实现代码
摘要:1。先来张图:导出前数据:导出结果:设置列宽和屏蔽栏位:结果2:2.先把脚本文件定义了。复制代码代码如下://Copyright2009无忧...

1。先来张图:

导出前数据:

Coolite优化导出Excel文件实现代码1

导出结果:

Coolite优化导出Excel文件实现代码2

设置列宽和屏蔽栏位:

Coolite优化导出Excel文件实现代码3

结果2:

Coolite优化导出Excel文件实现代码4

2.先把脚本文件定义了。

复制代码 代码如下:

//Copyright 2009 无忧lwz0721@gmail.com

var gridElse = {

getJsonToHidden: function(hidden, grid, format, title, fileName) {

hidden.setValue(this.getJsonDate(grid, format, title, fileName));

grid.submitData(true);

return true;

},

getJsonDate: function(grid, format, title, fileName) {

if (fileName == null || fileName == "") fileName = title;

var result = {

title: title,

format: format,

fileName: fileName,

dataCount: grid.store.reader.jsonData.length,

columns: '',

jsonDate: ''

};

//获取分组ID

var groupField;

if (typeof (grid.view.getGroupField) == "undefined")

{ groupField = false; }

else { groupField = grid.view.getGroupField(); }

//设置表头

var columns = this.getColumns(grid); //.getColumnModel().columns;

var columnCount = columns.length

for (var i = 0; i < columnCount; i++) {

if (columns[i].dataIndex != null && columns[i].dataIndex != "") {

fld = grid.store.fields.get(columns[i].dataIndex);

columns[i].recordFieldType = this.getRecordFieldType(fld);

}

if (groupField && groupField == columns[i].dataIndex)

columns[i].BGroup = true;

}

result.columns = Ext.encode(columns);

//返回数据

if (result.dataCount > 0 && result.dataCount <= 500) {

result.jsonDate = Ext.encode(grid.store.reader.jsonData);

}

else if (result.dataCount == null) result.dataCount = 0;

return Ext.encode(result);

},

getRecordFieldType: function(fld) {

if (fld == null) return "";

switch (fld.type) {

case "int": return "Int";

case "float": return "Float";

case "bool":

case "boolean": return "Boolean";

case "date": return "Date";

case "string": return "String";

default: return "Auto";

}

},

getColumns: function(grid) {

var columns = grid.getColumnModel().columns;

var columnCount = columns.length

for (var i = columnCount - 1; i >= 0; i--) {

if (columns[i].isColumnPlugin) columns.remove(columns[i]);

}

return columns;

}

};

3.调用方法:

复制代码 代码如下:

gridElse.getJsonToHidden(#{存储控件},#{GridPanel控件},'xls','标题','文件名');

4.aspx页面:

XXX.aspx

复制代码 代码如下:

<ext:Hidden ID="HToFile" runat="server" />

......

<ext:Store ID="Sdate" runat="server" OnSubmitData="Sdate_SubmitData" >

......

</ext:Store>

......

<ism:GridPanel ID="GPData" runat="server" StoreID="Sdate">

......

<ext:Button ID="Button1" runat="server" Text="Submit">

<Listeners>

<Click Handler="gridElse.getJsonToHidden(#{HToFile},#{GPData},'xls','标题','文件名');" />

</Listeners>

</ext:Button>

5.cs代码:

XXX.aspx.cs

复制代码 代码如下:

protected void Sdate_SubmitData(object sender, StoreSubmitDataEventArgs e)

{

String json = HToFile.Value.ToString();

if (!String.IsNullOrEmpty(json))

{

ExportDate exportDate = JSON.Deserialize<ExportDate>(json);

if (exportDate.dataCount > 0)

{

if (exportDate.Dates == null || exportDate.Dates.Length < exportDate.dataCount)

{

//如数据超过500条这重新查询数据导出

}

switch (exportDate.format)

{

case "xls":

GetToExcel(exportDate);

break;

case "pdf":

......

break;

}

}

}

}

public static void GetToExcel(ExportDate exportDate)

{

if (exportDate.Dates == null) { return; }

HttpContext context = HttpContext.Current;

if (context != null)

{

String rowid = "";

StringBuilder sb = new StringBuilder();

int columns = 0;

foreach (GridColumnInfo item in exportDate.GridColumnInfos)

{

if (!item.hidden || item.BGroup)

{

columns++;

}

}

#region 头部

sb.Append("<?xml version="1.0" encoding="utf-8"?>");

sb.Append("<?mso-application progid="Excel.Sheet"?>");

sb.Append("<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">");

sb.Append(" <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">");

sb.Append(" <Version>12.00</Version>");

sb.Append(" </DocumentProperties>");

sb.Append(" <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">");

sb.Append(" <RemovePersonalInformation/>");

sb.Append(" </OfficeDocumentSettings>");

sb.Append(" <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">");

sb.Append(" <WindowHeight>11640</WindowHeight>");

sb.Append(" <WindowWidth>19200</WindowWidth>");

sb.Append(" <WindowTopX>0</WindowTopX>");

sb.Append(" <WindowTopY>90</WindowTopY>");

sb.Append(" <ProtectStructure>False</ProtectStructure>");

sb.Append(" <ProtectWindows>False</ProtectWindows>");

sb.Append(" </ExcelWorkbook>");

#region 样式

sb.Append("<Styles>");

sb.Append("<Style ss:ID="Default">");

sb.Append("<Alignment ss:Vertical="Top" ss:WrapText="1" />");

sb.Append("<Font ss:FontName="宋体" ss:Size="11" />");

//sb.Append("<Borders>");

//sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

//sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

//sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

//sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

//sb.Append("</Borders>");

sb.Append("<Interior />");

sb.Append("<NumberFormat />");

sb.Append("<Protection />");

sb.Append("</Style>");

sb.Append("<Style ss:ID="title">");

sb.Append("<Borders />");

sb.Append("<Font ss:Size="16" ss:Bold="1" />");

sb.Append("<Alignment ss:WrapText="1" ss:Vertical="Center" ss:Horizontal="Center" />");

sb.Append("<NumberFormat ss:Format="@" />");

sb.Append("</Style>");

sb.Append("<Style ss:ID="headercell">");

sb.Append("<Font ss:Bold="1" ss:Size="12" />");

sb.Append("<Alignment ss:WrapText="1" ss:Horizontal="Center" />");

sb.Append("<Interior ss:Pattern="Solid" ss:Color="#F2F2F2" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:ID="even">");

sb.Append("<Interior ss:Pattern="Solid" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:Parent="even" ss:ID="evendate">");

sb.Append("<NumberFormat ss:Format="[ENG][$-409]dd-mmm-yyyy;@" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:Parent="even" ss:ID="evenint">");

sb.Append("<NumberFormat ss:Format="0" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:Parent="even" ss:ID="evenfloat">");

sb.Append("<NumberFormat ss:Format="0.00" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:ID="odd">");

sb.Append("<Interior ss:Pattern="Solid" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:Parent="odd" ss:ID="odddate">");

sb.Append("<NumberFormat ss:Format="[ENG][$-409]dd-mmm-yyyy;@" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:Parent="odd" ss:ID="oddint">");

sb.Append("<NumberFormat ss:Format="0" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("<Style ss:Parent="odd" ss:ID="oddfloat">");

sb.Append("<NumberFormat ss:Format="0.00" />");

sb.Append("<Borders>");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" />");

sb.Append("<Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" />");

sb.Append("</Borders>");

sb.Append("</Style>");

sb.Append("</Styles>");

#endregion

sb.AppendFormat("<Worksheet ss:Name="{0}">", exportDate.title);

sb.AppendFormat("<Table x:FullRows="1" x:FullColumns="1" ss:ExpandedColumnCount="{0}" ss:ExpandedRowCount="{1}">", columns, exportDate.Dates.Length + 2);

#endregion

//表列宽度

int ColumnWidthsZ = 0;

foreach (GridColumnInfo item in exportDate.GridColumnInfos)

{

if (!item.hidden || item.BGroup)

{

ColumnWidthsZ += item.width;

sb.AppendFormat("<Column ss:AutoFitWidth="1" ss:Width="{0}" />", item.width);

}

}

//标题

sb.Append("<Row ss:Height="28">");

sb.AppendFormat("<Cell ss:StyleID="title" ss:MergeAcross="{0}">", columns - 1);

sb.AppendFormat("<Data ss:Type="String">{0}</Data><NamedCell ss:Name="Print_Titles" />", exportDate.title);

sb.Append("</Cell>");

sb.Append("</Row>");

//表头

sb.Append("<Row ss:AutoFitHeight="1">");

foreach (GridColumnInfo item in exportDate.GridColumnInfos)

{

if (!item.hidden || item.BGroup)

{

sb.AppendFormat("<Cell ss:StyleID="headercell"><Data ss:Type="String">{0}</Data><NamedCell ss:Name="Print_Titles" /></Cell>", item.header);

}

}

sb.Append("</Row>");

//数据

int i = 0;

string cellClass = "";

foreach (Dictionary<string, string> row in exportDate.Dates)

{

i++;

cellClass = ((i & 1) == 0) ? "odd" : "even";

sb.Append("<Row>");

foreach (GridColumnInfo item in exportDate.GridColumnInfos)

{

rowid = item.id;

if (string.IsNullOrEmpty(rowid)) rowid = item.dataIndex;

if (!String.IsNullOrEmpty(rowid) && (!item.hidden || item.BGroup) && row.ContainsKey(rowid))

{

sb.AppendFormat("<Cell ss:StyleID="{0}{1}"><Data ss:Type="{2}">{3}</Data></Cell>",

cellClass, exportDate.GetStyleID(item.recordFieldType), exportDate.GetDataType(item.recordFieldType), row[rowid]);

}

}

sb.Append("</Row>");

}

#region 尾部

sb.Append("</Table>");

sb.Append("<WorksheetOptions>");

sb.Append("<PageSetup>");

sb.Append("<Layout x:CenterHorizontal="1" x:Orientation="Landscape" />");

sb.Append("<Footer x:Data="Page &P of &N" x:Margin="0.5" />");

sb.Append("<PageMargins x:Top="0.5" x:Right="0.5" x:Left="0.5" x:Bottom="0.8" />");

sb.Append("</PageSetup>");

sb.Append("<FitToPage />");

sb.Append("<Print>");

sb.Append("<PrintErrors>Blank</PrintErrors>");

sb.Append("<FitWidth>1</FitWidth>");

sb.Append("<FitHeight>32767</FitHeight>");

sb.Append("<ValidPrinterInfo />");

sb.Append("<VerticalResolution>600</VerticalResolution>");

sb.Append("</Print>");

sb.Append("<Selected />");

sb.Append("<DoNotDisplayGridlines />");

sb.Append("<ProtectObjects>False</ProtectObjects>");

sb.Append("<ProtectScenarios>False</ProtectScenarios>");

sb.Append("</WorksheetOptions>");

sb.Append("</Worksheet></Workbook>");

#endregion

context.Response.Clear();

if (context.Request.Browser.Browser != "IE")

context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename="{0}.xls"", exportDate.fileName));

else context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}.xls", System.Web.HttpUtility.UrlEncode(exportDate.fileName)));

context.Response.ContentType = "application/excel";

context.Response.Write(sb.ToString());

context.Response.End();

}

}

【Coolite优化导出Excel文件实现代码】相关文章:

.Net读取Excel 返回DataTable实例代码

ASP.NET 水晶报表打印功能实现代码

使用linq读取分隔符文本文件

asp.net 文件下载实现代码

ASP.NET中上传并读取Excel文件数据示例

asp.net用三层实现多条件检索示例

ASP.net 验证码实现代码(C#)

asp.net导出EXCEL的功能代码

.NET 扩展实现代码

将datagrid控件内容输出到excel文件

精品推荐
分类导航