DatagridToExcel

WPF datagrid转换成Excel

using System;
using System.collections.Generic;
using System.Reflection;
using Excel=Microsoft.Office.interop.Excel;
using System.Data;
using System.Windows;
namespace XXXXXX
{
	public calss EcportTo Excel
	{
		public DataTable DataToPrint;
		private Excel.Application _excelApp=null;
		private Excel.Workbooks _books=null;
		private Excel._workbooks.Workbook _book=null;
		private Excel.Sheets _sheets= null;
		private Excel._Worksheet _sheet=null;
		private Excel.Range _range=null;
		private Excel.Font _font=null;
		private object _optionalValue=Missing.Value;
		public int GenerateReport()
		{
			int result=1;
			try
			{
				if(DataToprint!=null)
				{
					if(DataToPrint.Rows.Count!=0)
					{
						CreateExcelRef();
						FillSheet();
						OpenReport();
					}
				}
			}
			catch(Exception e)
			{
				result=0;
				MessageBox.Show("Excel export error!\n",e.message);
			}
			finally
			{
				ReleaseObject(_sheet);
				ReleaseObject(_sheets);
				ReleaseObject(_book);
				ReleaseObject(_books);
				ReleaseObject(_excelApp);
			}
			return result;
		}
		private void OpenReport()
		{
			_excelApp.Visible=true;
		}
		private void FillSheet()
		{
			object[] header=CreateHeader();
		}
		private void WriteData()
		{
			object[,] objData = new object[DataToPrint.Rows.Count,DataToPrint.Columns.Count];
			for(int j=0;j<DataToPrint.Rows.Count;j++)
			{
				DataRow dr=DataToPrint.Rows[j];
				for(int i=0;i<DataToPrint.Columns.Count;i++)
				{
					var y=dr[i];
					objData[j,i]=(y==null)?"":y.Tostring();
				}
			}
			AddExcelRows("A2",DataToPrint.Rows.Count,DataToPrint.Columns.Count,objData);
			AutoFitColumns("A1',DataToPront.Rows+1,DataToPrint.Columns.Count);
		}
		private void AutoFitColumns(string strartRang,int rowCount,int colCount)
		{
			_range=_sheet.get_Range(startRange,_optionalValue);
			_range=_range.get_resize(RowCount,colCount);
			_range.Columns.AutoFit();
		}
		private object[] CreateHeader()
		{
			List<object> objHeaders= new List<object>();
			for(int n=0;n<DataToPrint.Columns.Count;n++)
			{
				objHeaders.Add(DataToPRint.Columns[n].ToString());
			}
			var headerToAdd=objHeaders.ToArray();
			AddExcelRows("A1",1,headerToAdd.Length,headerToAdd);
			SetHeaderStyle();
			return headerToAdd;
		}
		private void SetHeaderStyle()
		{
			_font=_range.Font;
			_font.Bold=true;
		}
		private void AddExcelRows(string startRange,int rowCount,int colCount, object values)
		{
			_range=_sheet.get_Range(startRang,_optionalValue);
			_range=_range.get_Resize(rowCount,colCount);
			_range.set_value(_ootionalValue,values);
		}
		private void CreateExcelRef()
		{
			_excelApp=new Excel.Application();
			_books=(Excel.Workbooks)_excelApp.Workbooks;
			_book=(Excel._Workbook)(_books.Add(_optionalValue));
			_sheets=(Excel.Sheets)_book.Worksheets;
			_sheet=(Excel._Worksheet)(_sheets.get_item(1));
		}
		private void ReleaseObject(object obj)
		{
			try
			{
				System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
				obj=null;
			}
			catch(Exceptiop ex)
			{
				obj=null
			}
			finally
			{
				GC.collect90;
			}
		}
	}
}

ASP.net ToExcel

private void ToExcel()
{
	Response.Charset="GB2312";
	Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
	string fileName=string.Formate("exprot{0}.xls",DateTime.Now.ToSting("yyyyMMddHHmmss"));
	string style=@"<style>.text{mso-number-format:\@;}</script>";
	Response.ClearContent();
	Response.AddHeader("content-disposition","attachment;filename="+fileName);
	Response.ContentType="application/excel";
	StringWriter sw=new StringWriter();
	HtmlTextWriter htw=new HtmlTextWriter(sw);
	this.dgSumData.RenderControl(htw);
	Response.Write(style);
	Response.Write(sw.ToString());
	Response.End();
}
/***以下函数必须有***/
public override void VerifyRenderingInServerForm(Control control)
{
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fwsylin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值