asp net导出excel(带图片)
Asp.Net使用Npoi导入导出Excel的方法
使⽤Npoi导⼊导出Excel的⽅法针对Excel⽂件的导⼊与导出是⾮常常见的功能之⼀。
本⽂实例讲述了使⽤Npoi导⼊导出Excel的⽅法。
分享给⼤家供⼤家参考之⽤。
具体⽅法如下:在使⽤Npoi导出Excel的时候,服务器可以不装任何office组件,⼀般在导出时⽤到Npoi导出Excel⽂件,所导Excel也符合规范,打开时也不会有任何⽂件损坏之类的提⽰。
但是在做导⼊时还是使⽤OleDb的⽅式,这种⽅式的导⼊在服务器端似乎还是需要装office组件的。
⼀、Npoi导出/下载Excel具体功能代码如下:public void NpoiExcel(DataTable dt, string title){erModel.HSSFWorkbook book = new erModel.HSSFWorkbook();erModel.ISheet sheet = book.CreateSheet("Sheet1");erModel.IRow headerrow = sheet.CreateRow(0);ICellStyle style = book.CreateCellStyle();style.Alignment = HorizontalAlignment.Center;style.VerticalAlignment = VerticalAlignment.Center;for (int i = 0; i < dt.Columns.Count; i++){ICell cell = headerrow.CreateCell(i);cell.CellStyle = style;cell.SetCellValue(dt.Columns[i].ColumnName);}MemoryStream ms = new MemoryStream();book.Write(ms);Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode(title + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8))); Response.BinaryWrite(ms.ToArray());Response.End();book = null;ms.Close();ms.Dispose();}⼆、导⼊Excel导⼊仍然是⽤OleDb这种⽅式,感兴趣的朋友可以尝试⼀下其他⽅法。
NET导出Excel文件
.NET导出Excel文件最近做 Excel导出功能,顺便整理了一下可用的一些导出Excel方法一般导出方式1,客户提出要将统计的结果导出到excel文件,首先利用如下方式:增加<%@page contentType="application/vnd.ms-excel;charset=GBK" %>头部说明,然后放一个table在该页面中即可了。
2,客户看过后提出了改进意见,要求保存文件的时候自动给文件一个名称,这样可以直接保存。
改进如下:增加response.setHeader("Content-Disposition", "attachment; filename="+fileName);但是却又遇到了乱码的问题:response.setHeader("Content-Disposition","attachment; filename="+new String(fileName.getBytes("GBK"),"iso-8859-1"));将文件名称的编码由GBK转换为ISO-8859-1就正常了。
GridView导出Excel尝试了一下Gridview导出为Excel,原本以为很简单,可是真正应用起来还是不太好弄的,呵呵,所想非所得。
总结了一下应该注意下面几点:1.由于gridview的内容可能是分页显示的,因此,这里在每次导出excel时,先将gridview 的allowpaging属性设置为false,然后databind()一下,确保搂到所有数据;2.不用单独设置导出的路径,导出时会弹出对话框让你确认保存位置;3.要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运行时为指定的 服务器控件呈现HtmlForm 控件;4.导出后别忘记再重新设置其allowpaging属性;当我把这些都设置好以后,点击[导出],出现了只能在执行Render() 的过程中调用RegisterForEventValidation(RegisterForEventValidation can only be called during Render(); )的错误,又检查代码,没发现问题啊,搞了一会弄不出来,然后搜索了一下,发现了解决办法:修改你的aspx文件中的:<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeFile="SysUser.aspx.cs" Inherits="Autho_SysUser2" %>增加红色的部分就ok了。
怎么将ASP.NET导出Excel表格
怎么将导出Excel表格怎么将导出Excel表格之前一直想研究导出Excel表格来着,但一直没有时间,这几天因为一个项目的需要,所以就钻研了一下。
小面小编告诉你怎么将导出Excel表格:1.在DownStudent.aspx页面上添加一个Label标签用来显示“请选择要查看数据的条件”静态文本;2.在该页面上添加DropDownList控件用来控制显示数据以及输出数据的条件,绑定DropDownList1_SelectedIndexChanged函数;3.在该页面上添加GridView控件来显示由DropDownList控件指定条件的数据;4.在该页面上添加SqlDataSource控件用来连接数据库并将查询的结果返给GridView控件;5.最后是一个确认按钮,绑定Button1_Click函数。
后台代码实现(DownStudent.aspx.cs):(具体代码见附录)后台代码的实现是导出Excel表格的关键所在,是重中之重。
1.首先是命名空间的问题,因为这里是导出Excel表格用到了输入输出流,所以必须在命名空间里引用IO流(using System.IO;),我这里用的是SQLServer数据库,所以还要用到(using System.Data;和using System.Data,Sql;);2.实现DropDownList1_SelectedIndexChanged函数,注意:SelectedIndexChanged方法的实现必须基于DropDownList1控件的AutoPostBack属性要设置为True(否则SelectedIndexChanged 方法无效),而DropDownList1_SelectedIndexChanged函数主要实现的就是根据DropDownList1控件选定的条件修改SqlDataSource 控件的SelectComand的值;代码示例:SqlDataSource1.SelectCommand = "SELECT [Chufen], [Zhibu], [Zhuanzheng] from bizusers WHERE (bizusers.Zhibu ='" + DropDownList1.SelectedItem.Text + "')";3.Button1_Click函数是精华所在,该函数实现思想是:先获取一个数据库连接(方法比较多,有传统通过SqlConnect获取的,也有调用外部类实现的),然后是一条SQL语句(Select查询字符串),再者是调用外部类的方法根据SQL语句生成一个DataSet结果集对象(把SQL 语句查询到的值放入DataSet里,方便下一次使用,而不是再去访问一次数据库),最后,调用CreateExcel函数,注意参数;4.实现CreateExcel函数(就是对生成的DataSet的进一步操作了);其他引用文件说明:在App_Code文件夹里主要有3个外部类,QueryString.cs文件这里不是重点,故跳过。
ASP.NETCore导入导出Excelxlsx文件实例
Core导⼊导出Excelxlsx⽂件实例 Core 使⽤EPPlus.Core导⼊导出Excel xlsx ⽂件,EPPlus.Core⽀持Excel 2007/2010 xlsx⽂件导⼊导出,可以运⾏在Windows, Linux和Mac。
EPPlus.Core 是基于EPPlus 更改⽽来,在Linux 下需要安装libgdiplus 。
下⾯在 Core 中导⼊导出Excel xlsx ⽂件。
新建项⽬新建⼀个 Core Web Application 项⽬ASPNETCoreExcel,选择Web 应⽤程序不进⾏⾝份验证。
然后添加EPPlus.Core 引⽤。
使⽤NuGet 命令⾏:Install-Package EPPlus.Core也可以使⽤NuGet包管理器安装。
导出xlsx⽂件新建⼀个XlsxController ,添加Export 操作。
public class XlsxController : Controller{private IHostingEnvironment _hostingEnvironment;public XlsxController(IHostingEnvironment hostingEnvironment){_hostingEnvironment = hostingEnvironment;}public IActionResult Index(){return View();}public IActionResult Export(){string sWebRootFolder = _hostingEnvironment.WebRootPath;string sFileName = $"{Guid.NewGuid()}.xlsx";FileInfo file = new FileInfo(bine(sWebRootFolder, sFileName));using (ExcelPackage package = new ExcelPackage(file)){// 添加worksheetExcelWorksheet worksheet = package.Workbook.Worksheets.Add("aspnetcore");//添加头worksheet.Cells[1, 1].Value = "ID";worksheet.Cells[1, 2].Value = "Name";worksheet.Cells[1, 3].Value = "Url";//添加值worksheet.Cells["A2"].Value = 1000;worksheet.Cells["B2"].Value = "LineZero";worksheet.Cells["C2"].Value = "/linezero/";worksheet.Cells["A3"].Value = 1001;worksheet.Cells["B3"].Value = "LineZero GitHub";worksheet.Cells["C3"].Value = "https:///linezero";worksheet.Cells["C3"].Style.Font.Bold = true;package.Save();}return File(sFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");}}通过依赖注⼊获取HostingEnvironment,对应可以获取程序的相关⽬录及属性。
asp.net中使用npoi导出excel电子表格
中使用npoi导出excel电子表格NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目,可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
一、添加引用1、将NPOI.dll、Ioniz.Zip.dll复制到web/bin 文件夹中;2、在common公用工具层添加引用,浏览找到NPOI.dll;二、类库代码在common中建立类库NPOIExcel.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;using NPOI;using NPOI.HPSF;using NPOI.HSSF;using erModel;using NPOI.POIFS;using NPOI.Util;using System.IO;using System.Data;using System.Data.SqlClient;public class DataTableRenderT oExcel{/// <summary>/// DataTable导出到Excel文件/// </summary>/// <param name="dtSource">源DataTable</param>/// <param name="strHeaderText">表头文本</param>/// <param name="strFileName">保存位置</param>public static void DataTableToExcel(DataTable dtSource, string strHeaderText, string strFileName){using (MemoryStream ms = DataTableToExcel(dtSource, strHeaderText)){using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write)){byte[] data = ms.T oArray();fs.Write(data, 0, data.Length);fs.Flush();}}}/// <summary>/// DataTable导出到Excel的MemoryStream/// </summary>/// <param name="dtSource">源DataTable</param>/// <param name="strHeaderText">表头文本</param>public static MemoryStream DataTableToExcel(DataT able dtSource, string strHeaderText){HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet();#region 右击文件属性信息{DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();pany = "NPOI";workbook.DocumentSummaryInformation = dsi;SummaryInformation si = PropertySetFactory.CreateSummaryInformation();si.Author = "文件作者信息"; //填加xls文件作者信息si.ApplicationName = "创建程序信息"; //填加xls文件创建程序信息stAuthor = "最后保存者信息"; //填加xls文件最后保存者信息ments = "作者信息"; //填加xls文件作者信息si.Title = "标题信息"; //填加xls文件标题信息si.Subject = "主题信息";//填加文件主题信息si.CreateDateTime = System.DateTime.Now;workbook.SummaryInformation = si;}#endregionHSSFCellStyle dateStyle = (HSSFCellStyle)workbook.CreateCellStyle();HSSFDataFormat format = (HSSFDataFormat)workbook.CreateDataFormat();dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");//取得列宽int[] arrColWidth = new int[dtSource.Columns.Count];foreach (DataColumn item in dtSource.Columns){arrColWidth[item.Ordinal] = System.Text.Encoding.GetEncoding(936).GetBytes(item.Column Name.T oString()).Length;}for (int i = 0; i < dtSource.Rows.Count; i++){for (int j = 0; j < dtSource.Columns.Count; j++){int intTemp = System.Text.Encoding.GetEncoding(936).GetBytes(dtSource.Row s[i][j].ToString()).Length;if (intTemp > arrColWidth[j]){arrColWidth[j] = intTemp;}}}int rowIndex = 0;foreach (DataRow row in dtSource.Rows){#region 新建表,填充表头,填充列头,样式if (rowIndex == 65535 || rowIndex == 0){if (rowIndex != 0){sheet = (HSSFSheet)workbook.CreateSheet();}#region 表头及样式{HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0);headerRow.HeightInPoints = 25;headerRow.CreateCell(0).SetCellValue(strHeaderText);HSSFCellStyle headStyle = (HSSFCellStyle)workbook.CreateCellStyle();headStyle.Alignment = erModel.HorizontalAlignment.LEFT; //左对齐HSSFFont font = (HSSFFont)workbook.CreateFont();font.FontHeightInPoints = 20;font.Boldweight = 700;headStyle.SetFont(font);headerRow.GetCell(0).CellStyle = headStyle;// sheet.AddMergedRegion(new Region(0, 0, 0, dtSource.Columns.Count - 1));//headerRow.Dispose();}#endregion#region 列头及样式{HSSFRow headerRow = (HSSFRow)sheet.CreateRow(1);HSSFCellStyle headStyle = (HSSFCellStyle)workbook.CreateCellStyle();//headStyle.Alignment = CellHorizontalAlignment.CENTER;HSSFFont font = (HSSFFont)workbook.CreateFont();font.FontHeightInPoints = 10;font.Boldweight = 700;headStyle.SetFont(font);foreach (DataColumn column in dtSource.Columns){headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);headerRow.GetCell(column.Ordinal).CellStyle = headStyle;//设置列宽sheet.SetColumnWidth(column.Ordinal,(arrColWidth[column.Ordinal] + 1) * 256);}// headerRow.Dispose();}#endregionrowIndex = 2;}#endregion#region 填充内容HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);foreach (DataColumn column in dtSource.Columns){HSSFCell newCell = (HSSFCell)dataRow.CreateCell(column.Ordinal);string drValue = row[column].ToString();switch (column.DataType.ToString()){case "System.String"://字符串类型newCell.SetCellValue(drValue);break;case "System.DateTime"://日期类型System.DateTime dateV;System.DateTime.TryParse(drValue, out dateV);newCell.SetCellValue(dateV);newCell.CellStyle = dateStyle;//格式化显示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); newCell.SetCellValue(intV); break;case "System.Decimal"://浮点型case "System.Double":double doubV = 0;double.TryParse(drValue, out doubV); newCell.SetCellValue(doubV); break;case "System.DBNull"://空值处理newCell.SetCellValue("");break;default:newCell.SetCellValue("");break;}}#endregionrowIndex++;}using (MemoryStream ms = new MemoryStream()){workbook.Write(ms);ms.Flush();ms.Position = 0;sheet.Dispose();//workbook.Dispose();//一般只用写这一个就OK了,他会遍历并释放所有资源,但当前版本有问题所以只释放sheetreturn ms;}}/// <summary>读取excel/// 默认第一行为标头/// </summary>/// <param name="strFileName">excel文档路径</param> /// <returns></returns>public static DataT able Import(string strFileName){DataTable dt = new DataTable();HSSFWorkbook hssfworkbook;using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read)){hssfworkbook = new HSSFWorkbook(file);}HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(0);System.Collections.IEnumerator rows = sheet.GetRowEnumerator();HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);int cellCount = stCellNum;for (int j = 0; j < cellCount; j++){HSSFCell cell = (HSSFCell)headerRow.GetCell(j);dt.Columns.Add(cell.ToString());}for (int i = (sheet.FirstRowNum + 1); i <= stRowNum; i++){HSSFRow row = (HSSFRow)sheet.GetRow(i);DataRow dataRow = dt.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++){if (row.GetCell(j) != null)dataRow[j] = row.GetCell(j).ToString();}dt.Rows.Add(dataRow);}return dt;}//以上是新增的。
asp.net导出数据到EXCEL的方法总结
导出数据到EXCEL的方法总结在中导出数据到EXCEL里的方法很多,本文总结了常见的几种导出方式(由dataset生成,由datagrid生成,dataview ),供大家参考!1、由dataset生成public void CreateExcel(DataSet ds,string typeid,string FileName){HttpResponse resp;resp = Page.Response;resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);string colHeaders= "", ls_item="";int i=0;//定义表对象与行对像,同时用DataSet对其值进行初始化DataTable dt=ds.T ables[0];DataRow[] myRow=dt.Select("");// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件if(typeid=="1"){//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符for(i=0;i colHeaders+=dt.Columns[i].Caption.ToString()+" \t";colHeaders +=dt.Columns[i].Caption.ToString() +"\n";//向HTTP输出流中写入取得的数据信息resp.Write(colHeaders);//逐行处理数据foreach(DataRow row in myRow){//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\nfor(i=0;i ls_item +=row[i].ToString() + "\t";ls_item += row[i].T oString() +"\n";//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据resp.Write(ls_item);ls_item="";}}else{if(typeid=="2"){//从DataSet中直接导出XML数据并且写到HTTP输出流中resp.Write(ds.GetXml());}}//写缓冲区中的数据到HTTP头文件中resp.End();}2、由datagrid生成public void ToExcel(System.Web.UI.Control ctl){HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");HttpContext.Current.Response.Charset ="UTF-8";HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/mswordctl.Page.EnableViewState =false;System.IO.StringWriter tw = new System.IO.StringWriter() ;System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);ctl.RenderControl(hw);HttpContext.Current.Response.Write(tw.ToString());HttpContext.Current.Response.End();}用法:ToExcel(datagrid1);3、这个用dataviewpublic void OutputExcel(DataView dv,string str){//// TODO: 在此处添加构造函数逻辑////dv为要输出到Excel的数据,str为标题名称GC.Collect();Application excel;// = new Application();int rowIndex=4;int colIndex=1;_Workbook xBk;_Worksheet xSt;excel= new ApplicationClass();xBk = excel.Workbooks.Add(true);xSt = (_Worksheet)xBk.ActiveSheet;////取得标题//foreach(DataColumn col in dv.Table.Columns){colIndex++;excel.Cells[4,colIndex] = col.ColumnName;xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]). HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐}////取得表格中的数据//foreach(DataRowView row in dv){rowIndex ++;colIndex = 1;foreach(DataColumn col in dv.Table.Columns){colIndex ++;if(col.DataType == System.Type.GetType("System.DateTime")){excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].T oString())).ToString ("yyyy-MM-dd");xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[row Index,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐}elseif(col.DataType == System.Type.GetType("System.String")) {excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].T oString();xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[row Index,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐}else{excel.Cells[rowIndex,colIndex] = row[col.ColumnName].T oString();}}}////加载一个合计行//int rowSum = rowIndex + 1;int colSum = 2;excel.Cells[rowSum,2] = "合计";xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]). HorizontalAlignment = XlHAlign.xlHAlignCenter;////设置选中的部分的颜色//xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSu m,colIndex]).Select();xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSu m,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种////取得整个报表的标题//excel.Cells[2,2] = str;////设置整个报表的标题格式//xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;////设置报表表格为最适应宽度//xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]). Select();xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]). Columns.AutoFit();////设置整个报表的标题为跨列居中//xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Horizo ntalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;////绘制边框//xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]). Borders.LineStyle = 1;xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Border s[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Border s[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colI ndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colI ndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗////显示效果//excel.Visible=true;//xSt.Export(Server.MapPath(".")+"\\"+this.xlfile.Text+".xls",S heetExportActionEnum.ssExportActionNone,Microsoft.Office.Int erop.OWC.SheetExportFormat.ssExportHTML );xBk.SaveCopyAs(Server.MapPath(".")+"\\"+this.xlfile.Text+". xls ");ds = null;xBk.Close(false, null,null);excel.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject (xBk);System.Runtime.InteropServices.Marshal.ReleaseComObject (excel);System.Runtime.InteropServices.Marshal.ReleaseComObject (xSt);xBk = null;excel = null;xSt = null;GC.Collect();string path = Server.MapPath(this.xlfile.Text+".xls");System.IO.FileInfo file = new System.IO.FileInfo(path);Response.Clear();Response.Charset="GB2312";Response.ContentEncoding=System.Text.Encoding.UTF8;// 添加头信息,为"文件下载/另存为"对话框指定默认文件名Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode());// 添加头信息,指定文件大小,让浏览器能够显示下载进度Response.AddHeader("Content-Length",file.Length.T oString());// 指定返回的是一个不能被客户端读取的流,必须被下载Response.ContentType = "application/ms-excel";// 把文件流发送到客户端Response.WriteFile(file.FullName);// 停止页面的执行Response.End();}本文来自: IT知道网() 详细出处参考:/html/net/aspnet/20091028/6722.html。
asp.net里导出excel表方法汇总
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
用法:ToExcel(datagrid1);
4、这个用dataview ,代码好长
//
//设置报表表格为最适应宽度
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
}
//
//取得表格中的数据
//
foreach(DataRowView row in dv)
{
rowIndex ++;
colIndex = 1;
foreach(DataColumn col in dv.Table.Columns)
{
colIndex ++;
//
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
HttpContext.Current.Response.Charset ="UTF-8";
asp.net中导出excel数据的方法汇总
1、由dataset生成代码如下:public void createexcel(dataset ds,string typeid,string filename){httpresponse resp;resp = page.response;resp.contentencoding = system.text.encoding.getencoding(gb2312);resp.appendheader(content-disposition, attachment;filename= + filename); string colheaders= , ls_item=;int i=0;//定义表对象与行对像,同时用dataset对其值进行初始化datatable dt=ds.tables[0];datarow[] myrow=dt.select();// typeid==1时导出为excel格式文件;typeid==2时导出为xml格式文件if(typeid==1){//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符for(i=0;i colheaders+=dt.columns[i].caption.tostring()+t;colheaders +=dt.columns[i].caption.tostring() +n;//向http输出流中写入取得的数据信息resp.write(colheaders);//逐行处理数据foreach(datarow row in myrow){//在当前行中,逐列获得数据,数据之间以t分割,结束时加回车符nfor(i=0;i ls_item +=row[i].tostring() + t;ls_item += row[i].tostring() +n;//当前行数据写入http输出流,并且置空ls_item以便下行数据resp.write(ls_item);ls_item=;}}else{if(typeid==2){//从dataset中直接导出xml数据并且写到http输出流中resp.write(ds.getxml());}}//写缓冲区中的数据到http头文件中resp.end();}2、由datagrid生成代码如下:public void toexcel(system.web.ui.control ctl){httpcontext.current.response.appendheader(content-disposition,attachment;filename=excel.xls);httpcontext.current.response.charset =utf-8;httpcontext.current.response.contentencoding =system.text.encoding.default;httpcontext.current.response.contenttype =application/ms-excel;//image/jpeg;text/html;image/gif;vnd.ms-excel/mswordctl.page.enableviewstate =false;system.io.stringwriter tw = new system.io.stringwriter() ;system.web.ui.htmltextwriter hw = new system.web.ui.htmltextwriter (tw);ctl.rendercontrol(hw);httpcontext.current.response.write(tw.tostring());httpcontext.current.response.end();}用法:toexcel(datagrid1);3、这个用dataview代码如下:public void outputexcel(dataview dv,string str){//// todo: 在此处添加构造函数逻辑////dv为要输出到excel的数据,str为标题名称gc.collect();application excel;// = new application();int rowindex=4;int colindex=1;_workbook xbk;_worksheet xst;excel= new applicationclass();xbk = excel.workbooks.add(true);xst = (_worksheet)xbk.activesheet;////取得标题//foreach(datacolumn col in dv.table.columns){colindex++;excel.cells[4,colindex] = col.columnname;xst.get_range(excel.cells[4,colindex],excel.cells[4,colindex]).horizontalalignment =xlvalign.xlvaligncenter;//设置标题格式为居中对齐}////取得表格中的数据//foreach(datarowview row in dv){rowindex ++;colindex = 1;foreach(datacolumn col in dv.table.columns){colindex ++;if(col.datatype == system.type.gettype(system.datetime)){excel.cells[rowindex,colindex] = (convert.todatetime(row[col.columnname].tostring())).tostring(yyyy-mm-dd);xst.get_range(excel.cells[rowindex,colindex],excel.cells[rowindex,colindex]).horizontalalignment = xlvalign.xlvaligncenter;//设置日期型的字段格式为居中对齐}elseif(col.datatype == system.type.gettype(system.string)){excel.cells[rowindex,colindex] = '+row[col.columnname].tostring();xst.get_range(excel.cells[rowindex,colindex],excel.cells[rowindex,colindex]).horizontalalignment = xlvalign.xlvaligncenter;//设置字符型的字段格式为居中对齐}else{excel.cells[rowindex,colindex] = row[col.columnname].tostring();}}}////加载一个合计行//int rowsum = rowindex + 1;int colsum = 2;excel.cells[rowsum,2] = 合计;xst.get_range(excel.cells[rowsum,2],excel.cells[rowsum,2]).horizontalalignment = xlhalign.xlhaligncenter;////设置选中的部分的颜色//xst.get_range(excel.cells[rowsum,colsum],excel.cells[rowsum,colindex]).select();xst.get_range(excel.cells[rowsum,colsum],excel.cells[rowsum,colindex]).interior.colorindex = 19;//设置为浅黄色,共计有56种////取得整个报表的标题//excel.cells[2,2] = str;////设置整个报表的标题格式//xst.get_range(excel.cells[2,2],excel.cells[2,2]).font.bold = true;xst.get_range(excel.cells[2,2],excel.cells[2,2]).font.size = 22;////设置报表表格为最适应宽度//xst.get_range(excel.cells[4,2],excel.cells[rowsum,colindex]).select();xst.get_range(excel.cells[4,2],excel.cells[rowsum,colindex]).columns.autofit();////设置整个报表的标题为跨列居中//xst.get_range(excel.cells[2,2],excel.cells[2,colindex]).select();xst.get_range(excel.cells[2,2],excel.cells[2,colindex]).horizontalalignment = xlhalign.xlhaligncenteracrossselection;////绘制边框//xst.get_range(excel.cells[4,2],excel.cells[rowsum,colindex]).borders.linestyle = 1;xst.get_range(excel.cells[4,2],excel.cells[rowsum,2]).borders[xlbordersindex.xledgeleft].weight = xlborderweight.xlthick;//设置左边线加粗xst.get_range(excel.cells[4,2],excel.cells[4,colindex]).borders[xlbordersindex.xledgetop].weight = xlborderweight.xlthick;//设置上边线加粗xst.get_range(excel.cells[4,colindex],excel.cells[rowsum,colindex]).borders[xlbordersindex.xledg eright].weight = xlborderweight.xlthick;//设置右边线加粗xst.get_range(excel.cells[rowsum,2],excel.cells[rowsum,colindex]).borders[xlbordersindex.xledge bottom].weight = xlborderweight.xlthick;//设置下边线加粗////显示效果//excel.visible=true;//xst.export(server.mappath(.)++this.xlfile.text+.xls,sheetexportactionenum.ssexportactionnone,microsoft.office.interop.owc.sheetexportformat.ssexpo rthtml);xbk.savecopyas(server.mappath(.)++this.xlfile.text+.xls);ds = null;xbk.close(false, null,null);excel.quit();system.runtime.interopservices.marshal.releasecomobject(xbk);system.runtime.interopservices.marshal.releasecomobject(excel);system.runtime.interopservices.marshal.releasecomobject(xst);xbk = null;excel = null;xst = null;gc.collect();string path = server.mappath(this.xlfile.text+.xls);system.io.fileinfo file = new system.io.fileinfo(path);response.clear();response.charset=gb2312;response.contentencoding=system.text.encoding.utf8;// 添加头信息,为文件下载/另存为对话框指定默认文件名response.addheader(content-disposition, attachment; filename= + server.urlencode());// 添加头信息,指定文件大小,让浏览器能够显示下载进度response.addheader(content-length, file.length.tostring());// 指定返回的是一个不能被客户端读取的流,必须被下载response.contenttype = application/ms-excel;// 把文件流发送到客户端response.writefile(file.fullname);// 停止页面的执行response.end();}导入、导出excel中的一些问题汇总一、在项目中的添加引用:右击项目资源管理器的引用-->添加引用-->选择.net选项卡-->选择microsoft.office.interop.excel-->确定(如下图);在选择时注意一下.net组件的版本号,图是的12.0.0.0是office2007的版本:二、在项目中使用microsoft.office.interop.excel:如果想使用microsoft.office.interop.excel,首先需要在项目中引用命名空间:using microsoft.office.interop.excel;三、建立excel.application相关对象//建立application对象microsoft.office.interop.excel.application myexcel = new application();//建立workbooks对象workbooks mybooks = myexcel.application.workbooks;//建立一个system.reflection.missing的object对象object omissing = system.reflection.missing.value;四、打开或新建excel的book文件//打开excel文件,注意里的“exccelfilepath”为excel文件在服务器上的物理地址,包括文件名workbook mybook = mybooks.open(exccelfilepath,omissing, omissing, omissing, omissing, omissing, omissing, omissing, omissing, omissing, omissing, omissing, omissing);//新建workseet对象,,此处为要操作的工作表,当前要操作的工作表的获取方法有两种:使用工作表的索引值或使用工作表的名称,名称默认为:“sheet1”/“sheet2”等worksheet mysheet = (worksheet)mybook.worksheets[1];//如果是新建excel工作簿,需要设置如下两行内容,以保证工作簿中有一个工作表,workbook workbook1 = excel1.workbooks.add(true);worksheet mysheet= (worksheet)workbook1.worksheets[sheet1];//设置excel对象是否显示界面,默认为false不显示界面myexcel.visble=true;五、一些比较重要的针对excel的操作1、获取range对象①、获取一个单元格的range对象://选择第一行、第一列的单元的单元格为range对象range r = (excel.range)mysheet.cells[1, 1];//选择多个连续的单元格为range对象range r=(excel.range)range.get_range(a1:f3)②、给单元格赋值或取出单元格的值://已选择了range对象的赋值:r.text=中国;//未选择range对象的赋值:mysheet.cells[1,2].text=中国;//已选择了range对象的取值:string strvalue= r.text;//未选择range对象的取值:string strvalue= mysheet.cells[1,2].text;③、给单元格设置边框mysheet.cells[2, 1].borderaround(xllinestyle.xlcontinuous, xlborderweight.xlthin, xlcolorindex.xlcolorindexautomatic, null);//画线④、合并单元格//合并单元格前先要将要合并的单元格选择为range对象range r=range.get_range(a1:f3);//然后现设置合并单元格r.mergecells = true;⑤、设置单元格的字体、字号、背景色等属性mysheet.cells[1, 1] = 黑体;mysheet.cells[1, 1].font.size = 20;mysheet.rows[1:1].rowheight = 40;mysheet.cells[1, 1].interior.color = color.fromargb(224, 224, 224);//设置颜色⑥、删除一行://首先获取要删除的行的rangemicrosoft.office.interop.excel.range range = (microsoft.office.interop.excel.range)mysheet.rows[sendedrow[1], type.missing];//注意删除行后删除后的行号被下面的行替换,如果逐行删除,请先从最大的行号往最小的行号删除range.delete(microsoft.office.interop.excel.xldeleteshiftdirection.xlshiftup);⑦、获取有数据的行数int rowsint = edrange.cells.rows.count;六、excel文件的保存与退出1、excel的保存与退出mybook.save();mybooks.close();myexcel.quit();2、excel指定文件保存mybook.close(true, filepath +_file_name, null);七、释放excle对象的资源与结束excel 进程关于这方面内容有好多网友都在讲多种方法,经过本人实践,以下方面才能真正做到结束excel的任务进程:1、将所有以上对excel的操作放到一个方法中,2、在操作excel后,即时将不使用对象一一释放并赋null值:system.runtime.interopservices.marshal.releasecomobject(mysheet);mysheet=null;system.runtime.interopservices.marshal.releasecomobject(mybook);mybook=null;//system.runtime.interopservices.marshal.releasecomobject(mybooks);mybooks=null;system.runtime.interopservices.marshal.releasecomobject(myexcel);myexcel=null;3、再新建一个方法,并以该方法中执行上面新建的操作excel方法,并在执行完操作excel方法的后面添加gc.collect()://下面方法中outputexcel()方法是输出excel文件的对excel操作的方法private void killexcel(){outputexcel();gc.collect();gc.waitforpendingfinalizers();}好多网友都在介绍使用gc.collect()释放excel占用的资源来结束excel进行,如果将“gc.collect();”与操作excel的业务写在一个程序块中,“gc”是永远不能结束excel进程的,在web应用程序中,这种现象是很可怕的事情。
Asp.NetCore实现Excel导出功能的实现方法
Core实现Excel导出功能的实现⽅法⽬录安装 ClosedXML将数据导出成 CSV ⽂件将数据导出成 XLSX ⽂件下载 Excel在web应⽤程序开发时,或许你会遇到这样的需求,如何在 Core 中实现 excel 或者 word 的导⼊导出,在 NuGet 上有⼤量的⼯具包可以实现这样的功能,本篇就讨论下如何使⽤ ClosedXML 实现 Excel 数据导出。
安装 ClosedXML如果想实现 Excel 的导出功能,在 Core 中有很多的dll可以做到,其中的⼀个叫做 ClosedXML,你可以通过可视化界⾯ NuGet package manager 去安装,也可以使⽤命令⾏ NuGet package manager console 执⾏下⾯命令。
Install-Package ClosedXML将数据导出成 CSV ⽂件将数据导成 CSV ⽂件是⾮常简单的,毕竟每⾏数据都是⽤ , 隔开即可,可以⽤ NuGet 上的 CsvExport 或者AWright18.SimpleCSVExporter 去实现,当然你觉得⾃⼰很 ,可以亲⾃操⼑实现,下⾯我准备亲⾃实现⼀下,先看下⾯定义的 Author 类。
public class Author{public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }}然后塞⼀些数据到 authors 列表中,如下代码所⽰:List<Author> authors = new List<Author>{new Author { Id = 1, FirstName = "Joydip", LastName = "Kanjilal" },new Author { Id = 2, FirstName = "Steve", LastName = "Smith" },new Author { Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}};定义⼀个 DownloadCommaSeperatedFile ⽅法,⽤于实现 Action 的 csv 导出功能。
将asp图片导出Excel的方法
将asp图片导出Excel的方法小编在网上找了很多要将asp图片导出Excel的方法,当时网上很多都是着实虚无,目前所知的方法有4种。
1.网上包括csdn大部分流行的方法,强制输出html格式为xls格式。
优点效率高,速度快。
缺点也很明显,毕竟不是真正的Excel格式,只是利用了office2000以后的版本可以直接打开html文件的特性强制生成的。
无法改变单元格格式等。
尤其是office2007,打开会提示您尝试打开的*xls"的格式与文件扩展名指定的格式不一致。
并且按保存时,会发现默认格式是txt。
这种方法不建议使用。
2.JavaScript格式,粗略的看了下。
有个致命的问题,要设置ie 安全属性。
一般用户会为了一个功能去繁琐的更高ie设置?而且也不是真正的csv格式,xls格式而已。
不考虑。
3.第三方控件,使用过MyXls这个控件,生成的真正的xls文件。
效率高,使用简单,不用考虑资源释放的问题。
可惜未发现导出图片的方法。
不过一般导出Excel的话,强烈推荐!4.使用微软的官方COM组件。
优点:功能强大。
缺点:效率低,需要手动关闭进程,释放资源,而且服务器端还需安装office。
暂时只发现这个可以导出图象到Excel。
方法如下:虽然服务器必须安装office,但并不需要安装完整版本的office,本人发现精简版也可以。
只不过设置麻烦一些而已。
先安装O2003PIA补丁。
下载地址百度。
网上一堆。
如果你安装完整版的office,可以跳过这部。
然后导入COM组件确定即可。
然后添加引用,如果安装的是完整版的,直接在引用的tab框中添加即可。
如果您是精简版的,下载个Microsoft.Office.Interop.Excel.dll。
然后放到网站根目录代码如下using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;//导入Com组件using Microsoft.Office.Core;//添加引用using ex=Microsoft.Office.Interop.Excel;using System.Reflection;public partial class _Default : System.Web.UI.Page {////// 导出图象到Excel/// 创建人:吴凯平/// 创建时间:2010年1月3日 12:46:38/////////protected void Page_Load(object sender, EventArgs e) {}////// 导出到Excel/////////protected void btnExcel_Click(object sender, EventArgs e){//声明一个默认值object missing = Missing.Value;//声明一个Excel应用程序对象ex.Application excelObj = new ex.ApplicationClass();//禁用Excel提示(否则第二次生成会提示是否覆盖等..)excelObj.DisplayAlerts = false;//不显示excel??excelObj.Visible = false;//创建workbooksex.Workbooks wbooks = excelObj.Workbooks;//使用Excel模板创建一个工作簿(模板必须先创建好放在网站可访问目录下)ex.Workbook wbook = wbooks.Open(Server.MapPath("模板路径"), missing, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,missing, missing);//新建一个excel工作表集合ex.Worksheets sheets = (ex.Worksheets)wbook.Worksheets;//新建一个工作表ex._Worksheet sheet = (ex._Worksheet)sheets.get_Item(1);//声明一个pictures对象,用来存放sheet的图片ex.Pictures pics = (ex.Pictures)sheet.Pictures(missing);//设置要插入的图片路径pics.Insert(Server.MapPath("图片路径"),MsoTriState.msoFalse, MsoTriState.msoCTrue);//插入图片}}////// 输出Excel/////////protected void ImageButton1_Click(object sender, ImageClickEventArgs e){if (chltStat.Visible == false){ClientScript.RegisterStartupScript(GetType(), "", "alert('没有数据请生成数据再导入!');", true);return;}object missing = Missing.Value;//定义一个Excel应用程序ex.ApplicationClass excelObj = new ex.ApplicationClass();excelObj.DisplayAlerts = false;excelObj.Visible = false;ex.Workbooks wbooks = excelObj.Workbooks;ex.Workbook wbook = wbooks.Open(Server.MapPath("../动态经营统计数据.xls"), missing, missing, missing, missing, missing, missing,missing, missing, missing, missing, missing, missing, missing, missing);ex.Sheets sheets = (ex.Sheets)wbook.Worksheets;ex._Worksheet sheet = (ex._Worksheet)sheets.get_Item(1);ex.Range exRange = (ex.Range)sheet.get_Range("B2", missing);exRange.Select();//声明一个pictures对象,用来存放柱状图ex.Pictures pics = (ex.Pictures)sheet.Pictures(missing);//插入图片pics.Insert(Server.MapPath("Chartlet_chltStat_区企业年度信息统计表_Bar.Jpg"), missing);sheet.Shapes.AddPicture(Server.MapPath("Chartlet_chltStat 2_区企业年度信息统计表_Line.Jpg"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoCTrue,50, 400, 570, 368);//504 326wbook.SaveAs(Server.MapPath("../xls/动态经营统计数据.xls"), missing, missing, missing, missing, missing,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoCh ange, missing, missing, missing, missing,missing);wbook.Close(false, missing, missing);excelObj.Quit();ClientScript.RegisterStartupScript(GetType(), "", "window.location.href='../xls/动态经营统计数据.xls';", true);//必须关闭释放所引用的COM对象,关闭Excel进程,否则会占用服务器资源ReleaseObj(sheets);ReleaseObj(wbook);ReleaseObj(wbooks);ReleaseObj(excelObj);System.GC.Collect();System.GC.WaitForPendingFinalizers();//BindGv();string filePath = Server.MapPath("../xls/动态经营统计数据.xls");Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");Response.AppendHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("动态经营统计数据", System.Text.Encoding.UTF8) + ".xls");Response.ContentType = "Application/excel";Response.WriteFile(filePath);Response.End();}。
.NET中将数据导入(导出)Excel文件
.NET中将数据导出(导出)Excel文件我们在WinForm应用程序或者Web程序中都会遇到需要将DataGridView 或者DataSet中的数据导出成为Excel类型的.xls文件。
下面就通过一个示例向大家演示在WinForm程序中如何将DataGridView中的数据导出为Excel文件,从DataSet中将数据导出为Excel的方法跟这个差不多的,这里就不再介绍了。
?Private void DataGridViewToExcel(DataGridView dgv){SaveFileDialog sfDialog = new SaveFileDialog();//保存导出的excel对话框sfDialog.Filter = "Excel Files(*.xls)|*.xls";//文件过滤器,只能保存为.xls类型的文件sfDialog.CheckFileExists = false;//如果用户指定不存在的文件名是否提示sfDialog.CheckPathExists = false;//如果用户指定不存在的路径是否提示sfDialog.FilterIndex = 0;sfDialog.RestoreDirectory = true;sfDialog.CreatePrompt = true;//如果该文件不存在则提示用户创建新文件sfDialog.Title = "保存为Excel 文件!";if (sfDialog.ShowDialog() == DialogResult.OK){Stream saveStream = sfDialog.OpenFile();//打开要保存的excel文件StreamWriter sw = new StreamWriter(saveStream, Encoding.GetEncoding(-0));//以特定的编码向流中插入字符,GetEncoding(-0)<br>首选编码的代码页标识符。
ASPNET中实现EXCEL导入和导出
ASPNET中实现EXCEL导入和导出页面效果图如下:录入按钮的OnClick事件代码如下:protectedvoid btnInput_Click(object sender, EventArgs e){if (fpInput.HasFile)//fpInput为FileUpload控件,判断是否选择了文件{string fileExt =System.IO.Path.GetExtension(fpInput.FileName);//获取文件名的后缀if (fileExt == ".xls")//判断文件后缀名是否是xls{try{string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fpInput.PostedFile.FileName + ";Extended Properties=Excel8.0;";//以xls文件创建连接字符串OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter oada = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);oada.Fill(dstInput_JWTYBH, "xlsTable");//填充xls中数据到数据集DataTable dtJWTYBH = dstInput_JWTYBH.Tables["xlsTable"];for (int i = 0; i < dtJWTYBH.Rows.Count;i++)//循环读取xls文件中的数据{strSql = "SELECT COUNT(*) FROM XS_JBXX WHERE XS_XH="" + dstInput_JWTYBH.Tables["xlsTable"].Rows[i]["学号"].ToString() + """;int iStNum = Convert.ToInt32(db.ExecScalar(strSql));if (iStNum == 0){strSql = "INSERT INTO XS_JBXX(XS_XH,XS_SFZH,XS_XM,NJ_ID,BJ_BH,XS_XBM,XS_XJH) VALUES("+ """ + dtJWTYBH.Rows[i]["学号"].ToString() + "","+ """ + dtJWTYBH.Rows[i]["身份证号"].ToString() + "","+ """ + dtJWTYBH.Rows[i]["姓名"].ToString() + "","+ """ + dtJWTYBH.Rows[i]["年级编号"].ToString() + "","+ """ + dtJWTYBH.Rows[i]["班级编号"].ToString() + "","+ """ + dtJWTYBH.Rows[i]["性别码"].ToString() + "","+ """ + dtJWTYBH.Rows[i]["教委统一编号"].ToString() + "")";}else if (iStNum == 1){strSql = "UPDATE XS_JBXX SET "+ "XS_SFZH="" + dtJWTYBH.Rows[i]["身份证号"].ToString() + "","+ "XS_XM="" + dtJWTYBH.Rows[i]["姓名"].ToString() + "","+ "NJ_ID="" + dtJWTYBH.Rows[i]["年级编号"].ToString() + "", " + "BJ_BH="" + dtJWTYBH.Rows[i]["班级编号"].ToString() + "", " + "XS_XBM="" + dtJWTYBH.Rows[i]["性别码"].ToString() + "", "+ "XS_XJH="" + dtJWTYBH.Rows[i]["教委统一编号"].ToString() + "" "+ "WHERE XS_XH="" + dtJWTYBH.Rows[i]["学号"].ToString() + """;}db.ExecCommand(strSql);BindData();}}catch (Exception exp){Response.Write("系统出现以下错误:" +exp.Message +"!请尽快与管理员联系.");}finally{db.Close();}}else{Response.Write("");}}Excel文件的导入在中比较简单,主要的要点是FileUpload控件的使用和用OleDb连接物理xls文件.对xls文件中数据的操作同对DataSet中数据的操作是一样的..下面是对导出功能的实现:先定义一个导出函数/////Excel数据导出函数//////<param< p=""> </param<>name="ctl">需要导出数据的控件///<param< p=""> </param<>name="FileName">导出的Excel文件名private voidToExcel(Control ctl, string FileName)HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.GetEncoding("GB2312");HttpContext.Current.Response.Charset = "GB2312";HttpContext.Current.Response.ContentType ="application/ms-excel";HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=" + "" + FileName);ctl.Page.EnableViewState = false;System.IO.StringWriter tw = new System.IO.StringWriter();HtmlTextWriter hw = new HtmlTextWriter(tw);ctl.RenderControl(hw);HttpContext.Current.Response.Write(tw.ToString());HttpContext.Current.Response.End();}其中一下两行代码最为重要HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.GetEncoding("GB2312");HttpContext.Current.Response.Charset = "GB2312";因为使用GB2312可以解决Excel导出数据出现中文乱码的问题,使用UTF-7/8都会出现乱码.导出按钮的OnClick事件如下:protectedvoid btnOutput_Click(object sender, EventArgs e)gvStJWTYBJ.AllowPaging = false;//设置GridView控件不能分页gvStJWTYBJ.AllowSorting = false;//设置GridView控件不能排序BindData();ToExcel(gvStJWTYBJ, "JWTYBH.xls");gvStJWTYBJ.AllowPaging = true;//恢复GridView控件分页gvStJWTYBJ.AllowSorting =true;//恢复GridView控件排序BindData();//数据绑定函数}如果在页面显示的时候设置了GridView控件是可以分页和排序的则再Excel数据导出的时候就∙分享微经验,让更多的人受益∙快去分享吧!!!只能导出显示的那几条数据而不能导出所有的数据,所以在调用ToExcel()函数进行Excel导出的时候要先设置GridView的排序和分页为false.以上代码还不能实现Excel的数据导出,因为会报以下两个错误.1.类型“GridView”的控件“gvStJWTYBJ”必须放在具有 runat=server 的窗体标记内。
asp.net生成Excel并导出下载五种实现方法
⽣成Excel并导出下载五种实现⽅法通过GridView(简评:⽅法⽐较简单,但是只适合⽣成格式简单的Excel,且⽆法保留VBA代码),页⾯⽆刷新aspx.cs部分复制代码代码如下:using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Text; public partial class DataPage_NationDataShow : System.Web.UI.Page { private Data_Link link = new Data_Link(); private string sql; protected void Page_Load(object sender, EventArgs e) { Ajax.Utility.RegisterTypeForAjax(typeof(DataPage_NationDataShow)); } protected void btnExcel_Click(object sender, EventArgs e) { string strExcelName = "MyExcel"; strExcelName = strExcelName.Replace(@"/", ""); Data_Link link = new Data_Link(); string strSQL = this.hidParam.Value; DataSet ds = new DataSet(); ds = link.D_DataSet_Return(strSQL);//获得想要放⼊Excel的数据 gvExcel.Visible = true; gvExcel.DataSource = null; gvExcel.DataMember = ds.Tables[0].TableName; gvExcel.DataSource = ds.Tables[0]; gvExcel.DataBind(); ExportToExcel(this.Page, gvExcel, strExcelName); } protected void gvExcel_RowDataBound(object sender, GridViewRowEventArgs e) { } public override void VerifyRenderingInServerForm(Control control) { } /// <summary> /// ⼯具⽅法,Excel出⼒(解决乱码问题) /// </summary> ///<param name="page">调⽤页⾯</param> /// <param name="excel">Excel数据</param> /// <param name="fileName">⽂件名</param> public void ExportToExcel(System.Web.UI.Page page, GridView excel, string fileName) { try { foreach (GridViewRow row in excel.Rows) { for (int i = 0; i < row.Cells.Count; i++) { excel.HeaderRow.Cells[i].BackColor = System.Drawing.Color.Yellow; } } excel.Font.Size = 10; excel.AlternatingRowStyle.BackColor =System.Drawing.Color.LightCyan; excel.RowStyle.Height = 25; page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName); page.Response.Charset = "utf-8"; page.Response.ContentType = "application/vnd.ms-excel"; page.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");excel.Page.EnableViewState = false; excel.Visible = true; excel.HeaderStyle.Reset(); excel.AlternatingRowStyle.Reset(); System.IO.StringWriter oStringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); excel.RenderControl(oHtmlTextWriter);page.Response.Write(oStringWriter.ToString()); page.Response.End(); excel.DataSource = null; excel.Visible = false; } catch (Exception e) { } } }aspx部分复制代码代码如下:<head runat="server"> <script type="text/javascript"> //Excel DownLoad function excelExport(){ var hidText = document.getElementById("hidParam"); hidText.value = "some params"; document.getElementById("ExcelOutput").click(); } </script> </head> <body onload="pageInit()"> <form id="form1"runat="server"> <input type="button" value="EXCEL下载" style="width:100px;" onclick="excelExport()" id="excelBut" /><input id="hidParam" type="text" runat="server" style="display:none;"/> <asp:Button runat="server" ID="ExcelOutput"style="display:none" Text= "EXCEL出⼒" Width="0px" onclick="btnExcel_Click" UseSubmitBehavior="false"/><asp:GridView ID="gvExcel" runat="server" Height="95px" OnRowDataBound="gvExcel_RowDataBound" Visible="False"> </asp:GridView> </form> </body>在刚才的aspx.cs代码中复制代码代码如下:foreach (GridViewRow row in excel.Rows) { for (int i = 0; i < row.Cells.Count; i++) { excel.HeaderRow.Cells[i].BackColor = System.Drawing.Color.Yellow; } }这部分是给表头添加样式。
ASP导出Excel数据的四种方法
ASP导出Excel数据的四种方法一、使用OWC什么是OWC?OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。
在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Office 2000),那么就有能力利用Office Web组件提供一个交互式图形开发环境。
这种模式下,客户端工作站将在整个任务中分担很大的比重。
<%Option ExplicitClass ExcelGenPrivate objSpreadsheetPrivate iColOffsetPrivate iRowOffsetSub Class_Initialize()Set objSpreadsheet = Server.CreateObject("OWC.Spreadsheet")iRowOffset = 2iColOffset = 2End SubSub Class_Terminate()Set objSpreadsheet = Nothing "Clean up End SubPublic Property Let ColumnOffset(iColOff) If iColOff > 0 theniColOffset = iColOffElseiColOffset = 2End IfEnd PropertyPublic Property Let RowOffset(iRowOff) If iRowOff > 0 theniRowOffset = iRowOffElseiRowOffset = 2End IfEnd Property Sub GenerateWorksheet(objRS)"Populates the Excel worksheet based on a Recordset"s contents"Start by displaying the titlesIf objRS.EOF then Exit SubDim objField, iCol, iRowiCol = iColOffsetiRow = iRowOffsetFor Each objField in objRS.FieldsobjSpreadsheet.Cells(iRow, iCol).Value = /doc/71b0b63383c4bb4cf7ecd11a.htmlobjSpreadsheet.Columns(iCol).AutoFitColumns"设置Excel表里的字体objSpreadsheet.Cells(iRow, iCol).Font.Bold = True objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10 objSpreadsheet.Cells(iRow, iCol).Halignment = 2 "居中iCol = iCol + 1Next "objField"Display all of the dataDo While Not objRS.EOFiRow = iRow + 1iCol = iColOffsetFor Each objField in objRS.FieldsIf IsNull(objField.Value) thenobjSpreadsheet.Cells(iRow, iCol).Value = ""ElseobjSpreadsheet.Cells(iRow, iCol).Value = objField.Value objSpreadsheet.Columns(iCol).AutoFitColumns objSpreadsheet.Cells(iRow, iCol).Font.Bold = False objSpreadsheet.Cells(iRow, iCol).Font.Italic = False objSpreadsheet.Cells(iRow, iCol).Font.Size = 10End IfiCol = iCol + 1Next "objFieldobjRS.MoveNextLoopEnd Sub Function SaveWorksheet(strFileName)"Save the worksheet to a specified filenameOn Error Resume NextCall objSpreadsheet.ActiveSheet.Export(strFileName, 0)SaveWorksheet = (Err.Number = 0)End FunctionEnd ClassDim objRSSet objRS = Server.CreateObject("ADODB.Recordset")objRS.Open "SELECT * FROM xxxx", "Provider=SQLOLEDB.1;Persist SecurityInfo=True;User ID=xxxx;Password=xxxx;Initial Catalog=xxxx;Data source=xxxx;"Dim SaveNameSaveName = Request.Cookies("savename")("name")Dim objExcelDim ExcelPathExcelPath = "Excel\" & SaveName & ".xls"Set objExcel = New ExcelGenobjExcel.RowOffset = 1objExcel.ColumnOffset = 1objExcel.GenerateWorksheet(objRS)If objExcel.SaveWorksheet(Server.MapPath(ExcelPath)) then "Response.Write "已保存为Excel文件.下载"ElseResponse.Write "在保存过程中有错误!"End IfSet objExcel = NothingobjRS.CloseSet objRS = Nothing%>二、用Excel的Application组件在客户端导出到Excel或Word 注意:两个函数中的“data“是网页中要导出的table的 id导出到Excel代码导出到Word代码三、直接在IE中打开,再存为EXCEL文件把读出的数据用格式,在网页中显示出来,同时,加上下一句即可把EXCEL表在客客户端显示。
asp中把数据导出为excel的2种方法
asp中把数据导出为excel的2种⽅法我们在做项⽬的时候经常要将数据库的数据导出到excel中,很多asp⽤户并不知道怎么写。
这⾥明凯总结了两种⽅法来导出excel,希望能帮到⼤家。
⽅法⼀:⽤excel组件< %set rs=server.createobject("adodb.recordset")sql="select * from mkusers"rs.open sql,objconn,1,1Set ExcelApp =CreateObject("Excel.Application")ExcelApp.Application.Visible = TrueSet ExcelBook = ExcelApp.Workbooks.AddExcelBook.WorkSheets(1).cells(1,1).value ="⽤户表"ExcelBook.WorkSheets(1).cells(2,1).value = "⽤户编号"ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"ExcelBook.WorkSheets(1).cells(2,4).value = "密码"cnt =3do while not rs.eofExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")rs.movenextcnt = cint(cnt) + 1loopExcelbook.SaveAs "d:\yourfile.xls" '这个是数据导出完毕以后在D盘存成⽂件ExcelApp.Application.Quit '导出以后退出ExcelSet ExcelApp = Nothing '注销Excel对象%>< %set rs=server.createobject("adodb.recordset")sql="select * from mkusers"rs.open sql,objconn,1,1Set ExcelApp =CreateObject("Excel.Application")ExcelApp.Application.Visible = TrueSet ExcelBook = ExcelApp.Workbooks.AddExcelBook.WorkSheets(1).cells(1,1).value ="⽤户表"ExcelBook.WorkSheets(1).cells(2,1).value = "⽤户编号"ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"ExcelBook.WorkSheets(1).cells(2,4).value = "密码"cnt =3do while not rs.eofExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")rs.movenextcnt = cint(cnt) + 1loopExcelbook.SaveAs "d:\yourfile.xls" '这个是数据导出完毕以后在D盘存成⽂件ExcelApp.Application.Quit '导出以后退出ExcelSet ExcelApp = Nothing '注销Excel对象%>⽅法⼆:使⽤⽂件组件< %dim s,sql,filename,fs,myfile,xSet fs = server.CreateObject("scripting.filesystemobject")'--假设你想让⽣成的EXCEL⽂件做如下的存放filename = Server.MapPath("order.xls")'--如果原来的EXCEL⽂件存在的话删除它if fs.FileExists(filename) thenfs.DeleteFile(filename)end if'--创建EXCEL⽂件set myfile = fs.CreateTextFile(filename,true)StartTime = Request("StartTime")EndTime = Request("EndTime")StartEndTime = "AddTime between #"& StartTime &" 00:00:00# and #"& EndTime &" 23:59:59#"strSql = "select * from mksuers "Set rstData =conn.execute(strSql)if not rstData.EOF and not rstData.BOF thendim trLine,responsestrstrLine=""For each x in rstData.fieldsstrLine = strLine & & chr(9)Next'--将表的列名先写⼊EXCELmyfile.writeline strLineDo while Not rstData.EOFstrLine=""for each x in rstData.FieldsstrLine = strLine & x.value & chr(9)nextmyfile.writeline strLinerstData.MoveNextloopend ifResponse.Write "⽣成EXCEL⽂件成功,点击<a href="/" rel="external nofollow" order.xls"" target=""_blank"">下载!"rstData.Closeset rstData = nothingConn.CloseSet Conn = nothing%>可以看出,第⼀种⽅法是直接导出的是excel⽂件,⽽第⼆张⽅法是到处的是⽂本⽂件,只不过后缀名改成了xls。
ASP导出Excel数据的四种方法
ASP导出E xcel数据的四种方法什么是OWC?OWC是O ffice WebCompe nt的缩写,即Mic rosof t的Off ice W eb组件,它为在We b中绘制图形提供了灵活的同时也是最基本的机制。
在一个intr anet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE5和Off ice 2000),那么就有能力利用Of ficeWeb组件提供一个交互式图形开发环境。
这种模式下,客户端工作站将在整个任务中分担很大的比重。
<%Opti on Ex plici tCl ass E xcelG enP rivat e obj Sprea dshee tPr ivate iCol Offse tP rivat e iRo wOffs etS ub Cl ass_I nitia lize()Se t obj Sprea dshee t = S erver.Crea teObj ect("OWC.S pread sheet")i RowOf fset= 2 iColO ffset = 2EndSub SubClass_Term inate()S et ob jSpre adshe et =Nothi ng 'C leanupE nd Su bP ublic Prop ertyLet C olumn Offse t(iCo lOff)IfiColO ff >0 the niC olOff set = iCol Off ElseiCol Offse t = 2End If End P roper tyPubli c Pro perty LetRowOf fset(iRowO ff) If iR owOff> 0theniRow Offse t = i RowOf fEl sei RowOf fset= 2 End I fEn d Pro perty SubGener ateWo rkshe et(ob jRS)'Pop ulate s the Exce l wor kshee t bas ed on a Re cords et'sconte nts 'Star t bydispl aying thetitle sIf objR S.EOF then Exit SubDimobjFi eld,iCol, iRowiCo l = i ColOf fsetiRow = iR owOff set For E ach o bjFie ld in objR S.Fie lds objSp reads heet.Cells(iRow, iCo l).Va lue = objF ield.NameobjS pread sheet.Colu mns(i Col).AutoF itCol umns'设置E xcel表里的字体objS pread sheet.Cell s(iRo w, iC ol).F ont.B old = Trueobj Sprea dshee t.Cel ls(iR ow, i Col).Font.Itali c = F alseobjS pread sheet.Cell s(iRo w, iC ol).F ont.S ize = 10 objSp reads heet.Cells(iRow, iCo l).Ha lignm ent = 2 '居中iC ol =iCol+ 1 Next'objF ield'Dis playall o f the dataDoWhile NotobjRS.EOFiRow = iR ow +1iC ol =iColO ffsetFor Each objF ieldin ob jRS.F ieldsIfIsNul l(obj Field.Valu e) th eno bjSpr eadsh eet.C ells(iRow, iCol).Val ue =""E lse objSp reads heet.Cells(iRow, iCo l).Va lue = objF ield.Valueobj Sprea dshee t.Col umns(iCol).Auto FitCo lumnsobj Sprea dshee t.Cel ls(iR ow, i Col).Font.Bold= Fal seo bjSpr eadsh eet.C ells(iRow, iCol).Fon t.Ita lic = Fals eob jSpre adshe et.Ce lls(i Row,iCol).Font.Size = 10End If iCol= iCo l + 1Nex t 'ob jFiel dob jRS.M oveNe xtL oop End S ub Fu nctio n Sav eWork sheet(strF ileNa me) 'Sav e the work sheet to a spec ified file nameOn E rrorResum e Nex tCa ll ob jSpre adshe et.Ac tiveS heet.Expor t(str FileN ame,0)S aveWo rkshe et =(Err.Numbe r = 0)En d Fun ctionEnd Clas sD im ob jRS Set o bjRS= Ser ver.C reate Objec t("AD ODB.R ecord set")obj RS.Op en "S ELECT * FR OM xx xx","Prov ider=SQLOL EDB.1;Pers ist S ecuri ty Info=True;UserID=xx xx;Pa sswor d=xxx x;Ini tialCatal og=xx xx;Da ta so urce=xxxx;" Di m Sav eNameSav eName = Re quest.Cook ies("saven ame")("nam e") Dim o bjExc elD im Ex celPa thE xcelP ath = "Exc el\"& Sav eName & ".xls"SetobjEx cel = NewExcel Gen objEx cel.R owOff set = 1o bjExc el.Co lumnO ffset = 1objE xcel.Gener ateWo rkshe et(ob jRS)If o bjExc el.Sa veWor kshee t(Ser ver.M apPat h(Exc elPat h)) t hen 'Resp onse.Write "<ht ml><b ody b gcolo r='ga insbo ro' t ext='#000000'>已保存为Ex cel 文件.<a hre f='"& ser ver.U RLEnc ode(E xcelP ath)& "'>下载</a>"E lse Respo nse.W rite"在保存过程中有错误!"E nd IfSet objE xcel= Not hingobjR S.Clo seS et ob jRS = Noth ing %>二、用Excel的Appl icati on组件在客户端导出到Exce l或Wor d注意:两个函数中的“d ata“是网页中要导出的tab le的i d<i nputtype="hidd en" n ame="out_w ord"oncli ck="v bscri pt:bu ildDo c" va lue="导出到wo rd" c lass="notP rint"><i nputtype="hidd en" n ame="out_e xcel" oncl ick="Autom ateEx cel();" va lue="导出到ex cel"class="not Print">导出到Exce l代码<SCRI PT LA NGUAG E="ja vascr ipt"><!--fu nctio n Aut omate Excel(){//Start Exce l and getAppli catio n obj ect.varoXL = newActiv eXObj ect("Excel.Appl icati on");//Get a newworkb ook.varoWB = oXL.Workb ooks.Add();va r oSh eet = oWB.Activ eShee t;v ar ta ble = docu ment.all.d ata;varhang= tab le.ro ws.le ngth;va r lie = ta ble.r ows(0).cel ls.le ngth;// Addtable head ers g oingcellby ce ll. for (i=0;i<hang;i++){ for (j=0;j<lie;j++)o Sheet.Cell s(i+1,j+1).valu e = t able.rows(i).ce lls(j).inn erTex t;}}oXL.Visib le =true;oXer Contr ol =true;} //--></S CRIPT>导出到Word代码<s cript lang uage="vbsc ript">Su b bui ldDocset tabl e = d ocume nt.al l.dat aro w = t able.rows.lengt hco lumn= tab le.ro ws(1).cell s.len gth SetobjWo rdDoc = Cr eateO bject("Wor d.Doc ument")objWo rdDoc.Appl icati on.Do cumen ts.Ad d the Templ ate,Falseobj WordD oc.Ap plica tion.Visib le=Tr ueDim t heArr ay(20,10000)f or i=0 torow-1for j=0to co lumn-1th eArra y(j+1,i+1) = ta ble.r ows(i).cel ls(j).inne rTEXTnex tne xto bjWor dDoc.Appli catio n.Act iveDo cumen t.Par agrap hs.Ad d.Ran ge.In sertB efore("综合查询结果集") //显示表格标题ob jWord Doc.A pplic ation.Acti veDoc ument.Para graph s.Add.Rang e.Ins ertBe fore("") Set r ngPar a = o bjWor dDoc.Appli catio n.Act iveDo cumen t.Par agrap hs(1).Rang eWi th rn gPara.Bo ld =True//将标题设为粗体.Par agrap hForm at.Al ignme nt =1 //将标题居中.Fon t.Nam e = "隶书" //设定标题字体.Font.Size= 18//设定标题字体大小End WithSet rngC urren t = o bjWor dDoc.Appli catio n.Act iveDo cumen t.Par agrap hs(3).Rang eSe t tab Curre nt =ObjWo rdDoc.Appl icati on.Ac tiveD ocume nt.Ta bles.Add(r ngCur rent,row,c olumn)f or i= 1 t o col umn objW ordDo c.App licat ion.A ctive Docum ent.T ables(1).R ows(1).Cel ls(i).Rang e.Ins ertAf ter theArr ay(i,1)o bjWor dDoc.Appli catio n.Act iveDo cumen t.Tab les(1).Row s(1).Cells(i).R ange.Parag raphF ormat.alig nment=1n ext For i =1 t o col umn For j = 2to ro wob jWord Doc.A pplic ation.Acti veDoc ument.Tabl es(1).Rows(j).C ells(i).Ra nge.I nsert After theA rray(i,j)objW ordDo c.App licat ion.A ctive Docum ent.T ables(1).R ows(j).Cel ls(i).Rang e.Par agrap hF orm at.al ignme nt=1NextNex tE nd Su b</SCRIP T>三、直接在IE中打开,再存为EXCEL文件把读出的数据用<t able>格式,在网页中显示出来,同时,加上下一句即可把EX CEL表在客客户端显示。
ASP导出为Word或Excel的最简单方法
ASP导出为Word或Excel的最简单方法2010-09-04 15:05方法1:把一个Word文档另存为XML格式(可能需要Office2003才能支持),然后你就可以用操作XML文件的方法,来对这个文件中指定的文字替换成你需要的内容。
重新打开这个文件,你会发现它是在Word中打开的,这样可以用Word来继续编辑或者打印。
方法2:我在做一项目时,客户要求要将从数据库中获取数据后的ASP页面导出成EXCEL或WORD文档。
经本人试验后找出了最简单的方法:在ASP文件的最开头位置加入下面的代码就可以了,非常简单。
Asp代码1.EXCEL2.<%3.Response.ContentType ="application/vnd.ms-excel"4.Response.AddHeader "Content-Disposition", "attachment; filename=红宝网络表格.xls"5.%>6.7.WORD8.<%9.Response.ContentType ="application/vnd.ms-word"10.Response.AddHeader "Content-Disposition", "attachment; filename=红宝网络文档.doc"11.%>导出为WORD时,若文档中含有表格,需要打打印,则要在导出的页面中加入下面的样式。
Css代码1.<style type="text/css">2.<!--3.table{4.border-collapse:collapse;border:none;mso-border-alt:solidwindowtext .5pt;5.mso-yfti-tbllook:480;mso-padding-alt:0cm 5.4pt 0cm5.4pt;mso-border-insideh:6..5pt solid windowtext;mso-border-insidev:.5pt solidwindowtext;border-left:solid windowtext 1.0pt;border-top:solid windowtext 1.0pt;7.}8.td{9.border-top:none;border-left:10.none;border-bottom:solid windowtext 1.0pt;border-right:solidwindowtext 1.0pt;11.mso-border-top-alt:solidwindowtext .5pt;mso-border-left-alt:solid windowtext .5pt;12.mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm5.4pt;13.}14.-->15.</style>我打字系统项目中的一个导出为EXCEL文件的实例代码如下:Asp代码1.<!--#include file="hbwlConfig.asp" -->2.<%Response.ContentType ="application/vnd.ms-excel"3.Response.AddHeader "Content-Disposition", "attachment;filename=chengji.xls"%>4.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">5.<html xmlns="/1999/xhtml">6.<head>7.<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />8.<title>打字成绩</title>9.<style type="text/css">10..tableWg {border:1px solid #9bbde6;}11..tableWg tr{text-align:center;}12..tableWg td{ border-bottom:1px dotted #9bbde6; border-right:1pxdotted #9bbde6;}13.</style>14.</head>15.<body>16.<%sql=session("chengjisql")17.response.Write hbwl.dbSelect(sql,0,1,"",0,"",0,"tableWg")%>18.</body>19.</html>20.<%set hbwl=nothing%>文章来源:季长旭博客鹿胎膏。
ASP.NET之Excel下载模板、导入、导出操作
之Excel下载模板、导⼊、导出操作本⽂介绍了下Excel下载模板、导⼊、导出操作,供⼤家参考,具体内容如下1.下载模板功能protected void btnDownload_Click(object sender, EventArgs e){var path = Server.MapPath(("upfiles\\") + "test.xlt"); //upfiles-⽂件夹 test.xlt-⽂件var name = "test.xlt";try{var file = new FileInfo(path);Response.Clear();Response.Charset = "GB2312";Response.ContentEncoding = System.Text.Encoding.UTF8;Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name)); //头信息,指定默认⽂件名Response.AddHeader("Content-Length", file.Length.ToString());//显⽰下载进度Response.ContentType = "application/ms-excel"; // 指定返回的是⼀个不能被客户端读取的流,必须被下载Response.WriteFile(file.FullName); // 把⽂件流发送到客户端pleteRequest();}catch (Exception ex){Response.Write("<script>alert('错误:" + ex.Message + ",请尽快与管理员联系')</script>");}}2.导⼊数据Excel数据导⼊到数据库中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
protected void Button2_Click(object sender, EventArgs e)
{
jiazaifenye(pagesize, curpage, v);
if (dt != null)
{
xlWorkSheet.Cells[1, 2] = "作品";
xlWorkSheet.Cells[1, 3] = "提交时间";
xlWorkSheet.Cells[1, 4] = "投票数";
xlWorkSheet.Cells[1, 5] = "作品链接";
xlWorkBook.Application.Quit();
xlWorkSheet = null;
xlWorkBook = null;
GC.Collect();
System.GC.WaitForPendingFinalizers();
{ //获得进程对象,以用来操作
System.Diagnostics.Process myproc = new System.Diagnostics.Process();
//得到所有打开的进程
try
{
#region 操作excel
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
{
if (System.IO.File.Exists(filename))
{
// pict.Insert(filename, Type.Missing);//显示原图 重叠在一起
xlWorkSheet.Cells[i + 2, 1] = dt.Rows[i]["titles"].ToString();
//xlWorkSheet.Cells[i + 1, 2] = dt.Rows[i]["a1"].ToString();
string dizhi = "";
if (dt.Rows[i]["types"].ToString() == "视频") { dizhi = dt.Rows[i]["contens"].ToString(); }
//为单元格赋值。
xlWorkSheet.Shapes.AddPicture(filename, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, PicLeft, PicTop, PicWidth, PicHeight);//指定位置显示小图
}
PicTop = Convert.ToSingle(range.Top) ;
PicWidth = Convert.ToSingle(range.MergeArea.Width);
PicHeight = Convert.ToSingle(range.Height);
xlWorkSheet.Cells[i + 2, 5] = dizhi;
#region
//可以直接取图片的地址
string filename = "E:\\天誉网站\\xunyuan\\Web\\upload\\"+dt.Rows[i]["a1"].ToString().Substring(7);
xlWorkSheet.Cells.Font.Size = 12;
#region 为excel赋值
for (int i = 0; i < dt.Rows.Count; i++)
{
xlWorkSheet.Cells[i + 2, 3] = dt.Rows[i]["times"].ToString();
xlWorkSheet.Cells[i + 2, 4] = dt.Rows[i]["a2"].ToString();
//获得需要杀死的进程名
foreach (Process thisproc in Process.GetProcessesByName(processName))
{ //立即杀死进程
thisproc.Kill();
Response.AppendHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("导出", System.Text.Encoding.UTF8) + ".xls");
range.Select();
/////////////
float PicLeft, PicTop, PicWidth, PicHeight; //距离左边距离,顶部距离,图片宽度、高度
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkorkSheet.Cells[1, 1] = "作者";
KillProcessexcel("EXCEL");
}
}
#endregion
#region 杀死进程
private void KillProcessexcel(string processName)
Response.ContentType = "Application/excel";
Response.WriteFile(filePath);
Response.End();
#endregion
#endregion
int rangeindex = i + 2;
string rangename = "B" + rangeindex;
Microsoft.Office.Interop.Excel.Range range = xlWorkSheet.get_Range(rangename, Type.Missing);
}
}
// ActiveWorkbook
}
#endregion
#region 保存excel文件
xlWorkBook = new Microsoft.Office.Interop.Excel.Application().Workbooks.Add(Type.Missing);
xlWorkBook.Application.Visible = false;
Microsoft.Office.Interop.Excel.Pictures pict = (Microsoft.Office.Interop.Excel.Pictures)xlWorkSheet.Pictures(Type.Missing);
if (filename.IndexOf(".") > 0)
#endregion
#endregion
#region 导出到客户端
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
PicWidth = Convert.ToSingle(range.Width);
PicLeft = Convert.ToSingle(range.Left);
////////////////////
string filePath = Server.MapPath("ReadExcel") + "" + System.DateTime.Now.ToString().Replace(":", "") + "导出.xls";
xlWorkBook.SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//设置宽度
((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 2]).ColumnWidth = 15;
//设置字体