string date1 = this.txtStartTime.Text.Trim();
string date2 = this.txtEndTime.Text.Trim();
string strDate = string.Empty;
string titledate = string.Empty;
if (date1 != "" && date2 != "")
{
strDate = " and (senddate between '" + date1 + "' and Dateadd(d,1,'" + date2 + "') ) ";
titledate = "(" + date1 + "至" + date2 + ")";
}
string tmpdepid = e.CommandArgument.ToString();
string tmpsql = "select a.tf,s.senddate,s.isly from tb_send s,tb_article a where s.sendArticleId=a.qwbs and s.senddepid='" + tmpdepid + "' " + strDate + " order by senddate desc";
DataTable dt = CHWEB.DBUtility.DbHelperSQL.Query(tmpsql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
Excel.Application excel = new Excel.Application();
if (excel == null)
{
return;
}
Excel.Workbooks workbooks = excel.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.ActiveSheet;
Excel.Range range = worksheet.Cells;
//设置表格样式
Excel.PageSetup ps = worksheet.PageSetup;
//ps.Orientation = Excel.XlPageOrientation.xlLandscape
ps.CenterHorizontally = true;
ps.LeftMargin = ps.RightMargin = excel.Application.InchesToPoints(0.551181102362205);
ps.TopMargin =ps.BottomMargin= excel.Application.InchesToPoints(0.590551181102362);
ps.HeaderMargin = ps.FooterMargin = excel.Application.InchesToPoints(0.511811023622047);
ps.CenterFooter = "第 &P 页,共 &N 页";
//导出内容如下--------------
Excel.Range r1 = worksheet.get_Range(range[1, 1], range[1, 4]) as Excel.Range;
r1.Merge(true);
r1.Value2 = getDepShortName(tmpdepid) + " 的报送数据" + titledate;
r1.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
r1.Font.Name = "黑体";
r1.RowHeight = 50;
r1.Font.Size = 20;
r1.Font.Bold = true;
string[] titles = new string[] { "序号", "报送标题", "报送日期", "状态" };
for (int i = 0; i < titles.Length; i++)
{
Excel.Range r = (Excel.Range)worksheet.Cells[2, i+1];
r.Value2 = titles[i];
r.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
r.RowHeight = 20;
r.Font.Bold = true;
switch(i.ToString())
{
case "0":
r.ColumnWidth = 8;
break;
case "2":
r.ColumnWidth = 18;
break;
case "3":
r.ColumnWidth = 8;
break;
default:
r.ColumnWidth = 48;
break;
}
}
int rowindex = 3;
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
Excel.Range rr1 ;
rr1 = (Excel.Range)worksheet.Cells[rowindex, 1];
rr1.Value2 = (i + 1).ToString();
rr1.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
Excel.Range rr2;
rr2 = (Excel.Range)worksheet.Cells[rowindex, 2];
rr2.Value2 = dr[0].ToString();
rr2.WrapText = true;//自动换行
if (dr[2].ToString() == "1")
{
rr2.Font.ColorIndex = 5;
}
Excel.Range rr3;
rr3 = (Excel.Range)worksheet.Cells[rowindex, 3];
rr3.Value2 = dr[1].ToString();
rr3.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
Excel.Range rr4;
rr4 = (Excel.Range)worksheet.Cells[rowindex, 4];
rr4.Value2 = getInfoStatus(dr[2].ToString());
rr4.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
rowindex++;
}
Excel.Range rAll = (Excel.Range)worksheet.get_Range(range[2, 1], range[rowindex-1, 4]);
rAll.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
//合计行
Excel.Range rFooter = (Excel.Range)worksheet.get_Range(range[rowindex, 1], range[rowindex, 4]);
rFooter.Merge(true);
rFooter.Value2 = "合计:报送总量" + dt.Rows.Count.ToString() + ",被采用量" + getDepUse(tmpdepid).ToString();
rFooter.RowHeight = 40;
rFooter.Font.Bold = true;
//-------------------------------
string filepath = Server.MapPath("export.xls");
excel.Visible=false;
workbook.SaveCopyAs(filepath);
workbook.Close(false, null, null);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
workbook = null;
excel = null;
worksheet = null;
GC.Collect();
System.IO.FileInfo file = new System.IO.FileInfo(filepath);
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(getDepShortName(tmpdepid)+".xls"));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
//Response.WriteFile(file.FullName);
Response.TransmitFile(filepath);
// 停止页面的执行
Response.End();
分享到:
相关推荐
在网上找了好多代码,要么就是不能指定位置,要么就是不能控制大小,现在我结合别人的方法修改了下,试用成功,可以在指定单元格导出指定大小的图片,也可以在中间显示原图,或者两种一起显示。
asp.net导出EXCEL,把Excel文件当做一个数据源来进行数据的读取操作。
ASP.NET导出Excel控件(示例源码)ASP.NET导出Excel控件(示例源码)
导出Excel执行 Render() 的过程中调用 RegisterForEventValidation 当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示。 有两种方法可以解决以上问题: 1...
.net对导出excel是表头的设置,可以跨行与跨列设置表头,以及设置多表头
asp.net 导出图片到excel .net导出excel
asp.net导出excel + excel导入 +DES加密/解密
Asp.net 导出Excel文件总结(导出csv、Office COM组建、Jet OLEDB、NPOI)
asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总asp.net里导出excel表方法汇总
ASP.NET导出Excel乱码的终极解决方案
net导出excel,用C#编程从数据库中读取图片数据导进Excel文件的方法附件
asp.net 导出excel报表,只需传入向方法参数即可,配置自己可根据文档自行配置,方便好用。
服务器不需要安装 Office,导出的excel格式为:Excel 97-2003 ,很强大
ASP.NET 导出Excel 可支持合并行列、字体等!
asp.net 页面导出到EXCEL,可以导出gridview,或者Div,或者Table里面的数据
ASP.NET导出EXCEL类ASP.NET导出EXCEL类ASP.NET导出EXCEL类ASP.NET导出EXCEL类ASP.NET导出EXCEL类
ASP.NET导出excel 是.net2008和sql server2000 开发的
Asp.Net导出Excel和TxT文档
ASP.net 导出Excel和word 不支持客户端程序
.net 导出excel 代码,有详细的和并列和控制字体等操作,不过只能看代码。运行需要环境。