前台页面的导入,导出

       <ext:FileUploadField ID="FileUploadField_Import" runat="server" ButtonOnly="true" ButtonText="导入" Icon="PackageIn"><DirectEvents><Change OnEvent="ImportExcelClick"><EventMask ShowMask="true"  Msg="正在导入数据。请稍后... ..."></EventMask></Change></DirectEvents></ext:FileUploadField><ext:Button ID="Button_ExportExcel" runat="server" Text="导出" Icon="PackageGo"><DirectEvents><Click OnEvent="ExportExcel_Click" IsUpload="true" ><ExtraParams ><ext:Parameter Name="GridLargeTypePanelData" Value="System.GridPanel_Data.getRowsValues({selectedOnly : false,visibleOnly:true})" Mode="Raw"/></ExtraParams></Click></DirectEvents></ext:Button>

后台的导入导出

   /// <summary>/// 导入/// </summary>/// <param name="sender"></param>/// <param name="e"></param>public void ImportExcelClick(object sender, DirectEventArgs e){if (this.FileUploadField_Import.PostedFile.InputStream.Length == 0) return;//导入配置ExcelTemplate excel = new ExcelTemplate(1, this.FileUploadField_Import.PostedFile.InputStream);using (DataTable dt = excel.ExportToDataTable()){Hashtable info;CResult result = null;DataRow[] rows = dt.Select("CODE  LIKE  '%00-000'", "CODE");if (rows.Length > 0){//你自己的代码}}this.FileUploadField_Import.Reset();}
   /// <summary>/// 导出Excel /// </summary>/// <param name="sender"></param>/// <param name="e"></param>public void ExportExcel_Click(object sender, DirectEventArgs e){string json = e.ExtraParams["GridLargeTypePanelData"].ToString();foreach (ColumnBase item in this.GridPanel_Data.ColumnModel.Columns){if (!item.Hidden){json = json.Replace("\"" + item.DataIndex + "\":", "\"" + item.Text + "\":");}}this.ToExcel(json);  //父类的方法}

导出的父类方法

  /// <summary>/// 导出Excel/// </summary>/// <param name="json"></param>public void ToExcel(string json){StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(json, null);XmlNode xml = eSubmit.Xml;this.Response.Clear();this.Response.ContentType = "application/vnd.ms-excel";this.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("导出信息" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls", Encoding.UTF8).ToString());XslCompiledTransform xtExcel = new XslCompiledTransform();xtExcel.Load(HttpContext.Current.Request.PhysicalApplicationPath + string.Format(@"Templates/通用导出.xslt"));xtExcel.Transform(xml, null, this.Response.OutputStream);this.Response.End();}
通用导出的文件.xslt
<?xml version="1.0" encoding="utf-8"?

> <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>

导入代码下来就是封装的类文件 ,源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;namespace EQU.UI.Base
{public class ExcelSetting : ArrayList{/// <summary>/// excel配置对象/// </summary>public ExcelSetting(): base(){}/// <summary>/// 以键值对的形式加入HeaderInfo结构/// </summary>/// <param name="p_FiledName"></param>/// <param name="p_DisplayName"></param>/// <returns></returns>public int Add(string p_FiledName, string p_DisplayName){HeaderInfo info = new HeaderInfo();info.DisplayName = p_DisplayName;info.FiledName = p_FiledName;return this.Add(info);}/// <summary>/// 批量加入可显示的结构单元/// </summary>/// <param name="p_Fileds"></param>/// <param name="p_Displaies"></param>/// <returns></returns>public int AddRange(string[] p_Fileds, string[] p_Displaies){if (p_Fileds.Length != p_Displaies.Length) return -1;for (int i = 0; i < p_Fileds.Length; i++){this.Add(p_Fileds[i], p_Displaies[i]);}return this.Count;}/// <summary>/// 批量加入可显示的结构单元/// </summary>/// <param name="p_Fileds"></param>/// <param name="p_Displaies"></param>/// <returns></returns>public int AddRange(ArrayList p_Fileds, ArrayList p_Displaies){if (p_Fileds.Count != p_Displaies.Count) return -1;for (int i = 0; i < p_Fileds.Count - 1; i++){this.Add(p_Fileds[i].ToString(), p_Displaies[i].ToString());}return this.Count;}}/// <summary>/// Excel头信息结构体/// </summary>public struct HeaderInfo{/// <summary>/// 用来显示字段的原始名称/// </summary>public string FiledName;/// <summary>/// 显示字段显示名称/// </summary>public string DisplayName;}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NPOI.SS.UserModel;
using System.IO;
using System.Data;
using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using System.Text;namespace EQU.UI.Base
{public class ExcelTemplate{/// <summary>/// 模板起始页标记/// </summary>public int ItemIndex = 3;IWorkbook hssfworkbook;//HSSFWorkbook hssfworkbook; 2015-2-5刘超 替换Npoi版本号private ExcelSetting m_ExcelSetting = null;/// <summary>/// 获取或设置结构设置/// </summary>public ExcelSetting ExcelSetting{get { return this.m_ExcelSetting; }set { this.m_ExcelSetting = value; }}public ExcelTemplate(){}/// <summary>/// 现有的配置构造导出实例/// </summary>/// <param name="p_Setting"></param>public ExcelTemplate(string p_TempPath){using (FileStream file = new FileStream(HttpContext.Current.Request.PhysicalApplicationPath + string.Format(@"Templates/other/{0}", p_TempPath), FileMode.Open, FileAccess.Read)){//将文件流中模板载入到工作簿对象中hssfworkbook = WorkbookFactory.Create(file);}}/// <summary>/// 现有的配置构造导出实例/// </summary>/// <param name="p_Setting"></param>public ExcelTemplate(int p_tempRow, string p_TempPath){this.ItemIndex = p_tempRow;using (FileStream file = new FileStream(HttpContext.Current.Request.PhysicalApplicationPath + string.Format(@"Templates/other/{0}", p_TempPath), FileMode.Open, FileAccess.Read)){//将文件流中模板载入到工作簿对象中 hssfworkbook = WorkbookFactory.Create(file);}}/// <summary>///  打开一个 Excel 的某个Sheet/// </summary>/// <param name="p_tempRow">字段行</param>/// <param name="p_Stream">流</param>public ExcelTemplate(int p_tempRow, Stream p_Stream){this.ItemIndex = p_tempRow;hssfworkbook = WorkbookFactory.Create(p_Stream);}/// <summary>/// 展现到Excel文件/// </summary>/// <param name="dtSource">数据源</param>/// <param name="strHeaderText">显示表头的标题</param>/// <param name="useEmptyTitle">是否显示数据集中的空标题,若为true。则显示字段的名称</param>/// <returns></returns>public MemoryStream RenderToExcel(DataTable dtSource, string strHeaderText){IWorkbook workbook = hssfworkbook;ISheet sheet = workbook.GetSheet("Sheet1");#region 右击文件 属性信息{DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();dsi.Company = "NPOI";(workbook as HSSFWorkbook).DocumentSummaryInformation = dsi;SummaryInformation si = PropertySetFactory.CreateSummaryInformation();si.Author = "文件作者信息"; //填加xls文件作者信息si.ApplicationName = "创建程序信息"; //填加xls文件创建程序信息si.LastAuthor = "最后保存者信息"; //填加xls文件最后保存者信息si.Comments = "作者信息"; //填加xls文件作者信息si.Title = "标题信息"; //填加xls文件标题信息si.Subject = "主题信息";//填加文件主题信息si.CreateDateTime = DateTime.Now;(workbook as HSSFWorkbook).SummaryInformation = si;}#endregion//获取模板样式IRow tempRow = sheet.GetRow(this.ItemIndex);//模板行tempRow.ZeroHeight = true;//隐藏模板ICellStyle dateStyle = workbook.CreateCellStyle();//dateStyle.BorderBottom = BorderStyle.THIN;//dateStyle.BorderLeft = BorderStyle.THIN;//dateStyle.BorderRight = BorderStyle.THIN;//dateStyle.BorderTop = BorderStyle.THIN;IDataFormat format = workbook.CreateDataFormat();int rowIndex = ItemIndex + 1;foreach (DataRow row in dtSource.Rows){#region 填充内容IRow dataRow = sheet.CreateRow(rowIndex);//foreach (DataColumn column in dtSource.Columns)foreach (ICell item in tempRow.Cells){ICell newCell = dataRow.CreateCell(item.ColumnIndex);dateStyle = item.CellStyle;newCell.CellStyle = dateStyle;if (string.IsNullOrEmpty(item.ToString())){continue;}DataColumn column = dtSource.Columns[item.ToString().Trim()];string drValue = row[column].ToString();switch (column.DataType.ToString()){case "System.String"://字符串类型if (drValue == "0")newCell.SetCellValue(string.Empty);elsenewCell.SetCellValue(drValue);//newCell.SetCellValue(drValue);break;case "System.DateTime"://日期类型if (string.IsNullOrEmpty(drValue)) { item.SetCellValue(string.Empty); break; };DateTime dateV;bool istr = DateTime.TryParse(drValue, out dateV);newCell.SetCellValue(dateV);newCell.CellStyle.DataFormat = format.GetFormat("yyyy-mm-dd");break;case "System.Boolean"://布尔型bool boolV = false;bool.TryParse(drValue, out boolV);newCell.SetCellValue(boolV);break;case "System.Int16"://整型case "System.Int32":case "System.Int64":case "System.Byte":int intV = 0;int.TryParse(drValue, out intV);if (intV == 0)newCell.SetCellValue(string.Empty);elsenewCell.SetCellValue(intV);break;case "System.Decimal"://浮点型case "System.Double":double doubV = 0;double.TryParse(drValue, out doubV);//newCell.SetCellValue(doubV);if (doubV == 0)newCell.SetCellValue(string.Empty);elsenewCell.SetCellValue(doubV);break;case "System.DBNull"://空值处理newCell.SetCellValue("");break;default:newCell.SetCellValue("");break;}}#endregionrowIndex++;}//sheet.ShiftRows(this.ItemIndex+1, sheet.LastRowNum, -1);using (MemoryStream ms = new MemoryStream()){workbook.Write(ms);ms.Flush();ms.Position = 0;//sheet.Dispose();//workbook.Dispose();//一般仅仅用写这一个就OK了,他会遍历并释放全部资源,但当前版本号有问题所以仅仅释放sheetreturn ms;}}/// <summary>/// 把Sheet中的数据转换为DataTable/// </summary>/// <param name="sheet"></param>/// <returns></returns>public DataTable ExportToDataTable(){DataTable dt = new DataTable();IWorkbook workbook = hssfworkbook;ISheet sheet = workbook.GetSheet("Sheet1");//默认。第一行是字段IRow headRow = sheet.GetRow(this.ItemIndex);//设置datatable字段for (int i = headRow.FirstCellNum, len = headRow.LastCellNum; i < len; i++){dt.Columns.Add(headRow.Cells[i].StringCellValue);}//遍历数据行for (int i = (this.ItemIndex + 1), len = sheet.LastRowNum + 1; i < len; i++){IRow tempRow = sheet.GetRow(i);DataRow dataRow = dt.NewRow();//遍历一行的每个单元格for (int r = 0, j = tempRow.FirstCellNum, len2 = tempRow.LastCellNum; j < len2; j++, r++){ICell cell = tempRow.GetCell(j);if (cell != null){switch (cell.CellType){case CellType.String:dataRow[r] = cell.StringCellValue;break;case CellType.Numeric:DateTime dtDate;if (DateTime.TryParse(cell.ToString(), out dtDate)){dataRow[r] = dtDate;}else{dataRow[r] = cell.NumericCellValue;}break;case CellType.Boolean:dataRow[r] = cell.BooleanCellValue;break;default: dataRow[r] = "";break;}}}dt.Rows.Add(dataRow);}return dt;}//保存到文件public void SaveToFile(MemoryStream ms, string fileName){using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)){byte[] data = ms.ToArray();fs.Write(data, 0, data.Length);fs.Flush();data = null;}}/// <summary>/// 发送到client/// </summary>/// <param name="ms"></param>/// <param name="context"></param>/// <param name="fileName"></param>public void RenderToBrowser(MemoryStream ms, HttpContext context, string fileName){if (context.Request.Browser.Browser == "IE")fileName = HttpUtility.UrlEncode(fileName);context.Response.ContentType = "application/x-zip-compressed";context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8).ToString());context.Response.BinaryWrite(ms.GetBuffer());context.Response.End();}}
}

大概就这么多了。希望对大家实用

ext.net 2.5 导出excel的使用方法相关推荐

  1. java excil表格开发_JAVA导出Excel电子表格的方法

    JAVA导出Excel电子表格的方法 package com.qingruxu.excel; import java.io.File; import java.io.IOException; impo ...

  2. sql2005导出Excel错误解决方法

    今天有个任务要导出数据库表到Excel文件,试了下直接导出数据,但是一直报错,然后从网上找了个sql语句: EXEC master..xp_cmdshell 'bcp 数据库.dbo.表 out d: ...

  3. 后台管理系统导出Excel表格的方法

    //导出Excel公共方法function excelExport(colums,queryParams,objectName,baseUrl,sysUrl,body,title){if(colums ...

  4. php导出excel格式文件,PHP导入与导出Excel文件的方法

    一.PHP导出Excel文件 1,推荐phpexcel,官方网站: http://www.codeplex.com/PHPExcel 导入导出都成,可以导出office2007格式,同时兼容2003 ...

  5. C# 导出 Excel 的各种方法总结

    第一种:使用 Microsoft.Office.Interop.Excel.dll 首先需要安装 office 的 excel,然后再找到 Microsoft.Office.Interop.Excel ...

  6. React,导出Excel表格的方法

    前端点击按钮导出Excel表,以下方法,前提是让后端返回的文件流可以直接请求下载. 意思就是:你通过在浏览器请求接口,传参就可以直接下载文件. 方法一: window.open('请求地址') 适用于 ...

  7. layui 导出 Excel表格的方法

    一.利用layui自带的excel导出功能 // 原始容器 <table id="demo" lay-filter="test"></tabl ...

  8. php导出excel方法,PHP导出EXCEL简单实用方法

    /** * 得到相应的列表字符串 * * @param $titArr 字段和标题的对应数组 * @param $data 数据的列表数组 * @param $fileName 文件的名字 * @pa ...

  9. C#中导出Excel报表的方法

    在上篇博文中提到了C#执行Excel宏模版的方法,这篇我们来介绍下怎么样将模版导出,并生成报表. winform中简单的示例代码如下: public ExportTextReport() { stri ...

最新文章

  1. jQuery实例——展示表格点击变色、全选、删除
  2. 你真的懂对抗样本吗?一文重新思考对抗样本背后的含义
  3. 自定义ToolBar
  4. 区块链培训资料(特别是以太坊)
  5. MATLAB函数记录
  6. redis 保存 array list 区别_Redis科普篇
  7. 说说Java中原子性,可见性与指令重排序的理解
  8. latex中怎样写上标_LaTex:参考文献引用的方法
  9. [转]被当做狗和鸡来驱赶的百姓
  10. 数据安全架构设计与实战~思维导图
  11. FreeImage 结合 VB6 使用技巧
  12. sina邮箱的发件服务器拒绝,新浪帮助-常见问题
  13. java 十六进制数的转换
  14. 系统简单的UIImagePickerController
  15. 昂达v891w可以用u盘linux,拆机小能手——ONDA 昂达 V891w CH 双系统电脑国产平板 拆解清灰!...
  16. 发一款资源查看,编辑软件,可以编辑dll,exe,res等后缀名的文件的小东东(Reshacker汉化版)
  17. PicGo+github搭建免费图床
  18. Sonarqube 扫描maven项目
  19. 机器视觉实验三 工件尺寸和面积测量
  20. python点图为什么显示不出来怎么办_Python底图不显示打印的点

热门文章

  1. LeetCode刷题(9)
  2. 优雅的嵌套滑动解决方式-NestedScroll
  3. 字段 密码有效期_你知道Linux中用户们的密码藏在哪儿吗?
  4. python开发环境有哪些特点_快速了解Python开发环境Spyder
  5. 关于滑轮组的计算机知识点,初中物理:滑轮及滑轮组知识点总结
  6. 2018麦考林杂志计算机科学,最新出炉|2018年麦考林杂志加拿大大学排名!
  7. Fleet究竟是什么?为什么最近这么火~
  8. 使用hutool发送QQ邮件在windows正常,linux发送报错。
  9. Teamcenter 入门开发系列问答(4)
  10. java中的强制类型转换注意事项_浅谈Java中强制类型转换的问题