利用模板导出数据到Excel中
2012-03-31 17:36
253 查看
可以自定义模板,使用挺方便的。
using System;
using System.Configuration;
using System.Data;
using System.Linq;
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.Xml.Linq;
using System.Reflection; //-------------------------------------------------------------需要添加引用 -!!!!-----------------
//------------------------------------需要添加 Microsoft.Office.Interop.Excel引用 。-----------------
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
{
GV1.DataSource = madeData();
GV1.DataBind();
}
}
//生成DataView的数据源。
protected DataTable madeData()
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名",typeof(string));
dt.Columns.Add("学号", typeof(string));
DataRow dr = dt.NewRow();
dr["姓名"] = "张三";
dr["学号"] = "20110101";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["姓名"] = "李四";
dr["学号"] = "20110102";
dt.Rows.Add(dr);
return dt;
}
protected void Button1_Click(object sender, EventArgs e)
{
//需要添加 Microsoft.Office.Interop.Excel引用 。----------------------------------------------------------!!!!!!!
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
if (app == null)
{
Response.Write("服务器上缺少Excel组件,需要安装Office软件。");
return;
}
app.Visible = false;
app.UserControl = true;
Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;
Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(Server.MapPath("~/ExcelTemplet/Info.xlsx")); //加载模板
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一个工作薄。
if (worksheet == null)
return; //工作薄中没有工作表.
//1、获取数据。
DataTable dt = (DataTable)GV1.DataSource; //--------------------------------------------------根据实际需要修改--------------!!!!!
int rowCount = dt.Rows.Count;
if (rowCount < 1)
return; //没有数据,不需要导出。
//2、写入数据,Excel索引从1开始。
for( int i=1; i<=rowCount; i++)
{
int row_ = 2 + i; //Excel模板上表头和标题行占了2行。---------------------------------------根据实际模板需要修改------------------!!!!
int dt_row = i - 1; //dataTable的行是从0开始的。
//worksheet.Cells[excelRow, 1] = dt.Rows[i]["姓名"].ToString();
worksheet.Cells[row_, 1] = i.ToString();
worksheet.Cells[row_, 2] = dt.Rows[dt_row]["姓名"].ToString();
worksheet.Cells[row_, 3] = dt.Rows[dt_row]["学号"].ToString();
}
//调整Excel的样式。
Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3",worksheet.Cells[rowCount+2,8]);
rg.Borders.LineStyle = 1; //单元格加边框。
worksheet.Columns.AutoFit(); //自动调整列宽。
//3、保存生成的Excel文件。
//Missing 在System.Reflection命名空间下。
string savaPath = "~/ExcelTemplet/Temp/T1_"+DateTime.Now.ToString("yyyyMMddHHmmss")+".xlsx";
workbook.SaveAs(Server.MapPath(savaPath), 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);
//4、按顺序释放资源。
NAR(worksheet);
NAR(sheets);
NAR(workbook);
NAR(workbooks);
app.Quit();
NAR(app);
Response.Redirect(savaPath);
}
private void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch
{ }
finally
{
o = null;
}
}
}
using System;
using System.Configuration;
using System.Data;
using System.Linq;
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.Xml.Linq;
using System.Reflection; //-------------------------------------------------------------需要添加引用 -!!!!-----------------
//------------------------------------需要添加 Microsoft.Office.Interop.Excel引用 。-----------------
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
{
GV1.DataSource = madeData();
GV1.DataBind();
}
}
//生成DataView的数据源。
protected DataTable madeData()
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名",typeof(string));
dt.Columns.Add("学号", typeof(string));
DataRow dr = dt.NewRow();
dr["姓名"] = "张三";
dr["学号"] = "20110101";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["姓名"] = "李四";
dr["学号"] = "20110102";
dt.Rows.Add(dr);
return dt;
}
protected void Button1_Click(object sender, EventArgs e)
{
//需要添加 Microsoft.Office.Interop.Excel引用 。----------------------------------------------------------!!!!!!!
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
if (app == null)
{
Response.Write("服务器上缺少Excel组件,需要安装Office软件。");
return;
}
app.Visible = false;
app.UserControl = true;
Microsoft.Office.Interop.Excel.Workbooks workbooks = app.Workbooks;
Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(Server.MapPath("~/ExcelTemplet/Info.xlsx")); //加载模板
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(1); //第一个工作薄。
if (worksheet == null)
return; //工作薄中没有工作表.
//1、获取数据。
DataTable dt = (DataTable)GV1.DataSource; //--------------------------------------------------根据实际需要修改--------------!!!!!
int rowCount = dt.Rows.Count;
if (rowCount < 1)
return; //没有数据,不需要导出。
//2、写入数据,Excel索引从1开始。
for( int i=1; i<=rowCount; i++)
{
int row_ = 2 + i; //Excel模板上表头和标题行占了2行。---------------------------------------根据实际模板需要修改------------------!!!!
int dt_row = i - 1; //dataTable的行是从0开始的。
//worksheet.Cells[excelRow, 1] = dt.Rows[i]["姓名"].ToString();
worksheet.Cells[row_, 1] = i.ToString();
worksheet.Cells[row_, 2] = dt.Rows[dt_row]["姓名"].ToString();
worksheet.Cells[row_, 3] = dt.Rows[dt_row]["学号"].ToString();
}
//调整Excel的样式。
Microsoft.Office.Interop.Excel.Range rg = worksheet.Cells.get_Range("A3",worksheet.Cells[rowCount+2,8]);
rg.Borders.LineStyle = 1; //单元格加边框。
worksheet.Columns.AutoFit(); //自动调整列宽。
//3、保存生成的Excel文件。
//Missing 在System.Reflection命名空间下。
string savaPath = "~/ExcelTemplet/Temp/T1_"+DateTime.Now.ToString("yyyyMMddHHmmss")+".xlsx";
workbook.SaveAs(Server.MapPath(savaPath), 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);
//4、按顺序释放资源。
NAR(worksheet);
NAR(sheets);
NAR(workbook);
NAR(workbooks);
app.Quit();
NAR(app);
Response.Redirect(savaPath);
}
private void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch
{ }
finally
{
o = null;
}
}
}
相关文章推荐
- Apache POI 第六讲之利用Excel模板实现数据的批量导出
- 利用Aspose.Cells和Excel模板导出复杂的统计数据
- 利用POI将数据导出到EXCEL模板
- java操作Excel之POI(5)利用POI实现使用模板批量导出数据
- 利用JXLS根据模板填充数据导出Excel实例
- 快速导出数据到Excel(三):利用Excel内置功能
- 快速导出数据到Excel(三):利用Excel内置功能
- 导出mysql数据,利用pandas生成excel文档,并发送邮件
- 使用poi通过excel模板导出excel数据
- POI按照模板导出Excel数据
- NPOI Excel模板填充数据后导出
- 利用java导出Excel数据的代码(PIO.JAR)
- java操作Excel之POI(4)利用POI实现数据的批量导出
- 利用POI读取Excel模板实现自己所需的Excel导出格式
- 利用ODBC从列表导出数据到excel
- java利用poi导出数据到excel
- 利用TOAD实现EXCEL数据在oracle的导入导出
- 利用SQL Server的DTS操作EXCEL、Access等数据表的导入导出
- NPOI 通过excel模板写入数据并导出
- 利用SQL的SSIS包设计器来导出数据表数据到excel