您的位置:首页 > 编程语言 > ASP

ASP.NET操作excel报表模板方法

2010-09-21 15:49 555 查看
aps.net操作excel 现在网上也有很资料,但是没有太多是基本方法性的介绍,很少有总结性的,或者示例性的文章,小弟学习asp.net时间不长,有个项目正好用到asp.net实现对excel的操作,需要实现报表模板,我综合网上一些相关文章,献丑一下,呵呵,可能还有很多需要修改的地方,希望能够抛砖引玉。

操作excel需要添加Interop.Excel.dll的引用,只有机器上装了excel2003的就都会有这个,直接引用即可,

DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.SqlConn, CommandType.StoredProcedure, "execel_select");
System.Data.DataTable dt = ds.Tables[0];
ds.Dispose();
//创建一个excel进程
Excel.Application app=new Excel.Application();
if (app == null)
{
return;
}
app.Visible = false;
Workbooks workbooks = app.Workbooks;
_Workbook workbook = workbooks.Add(Server.MapPath("paul.xls"));
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
string drname=null;

//GridView1.DataSource = dt.DefaultView;
//GridView1.DataBind();
drname = dt.Rows[0][0].ToString();

int n=0,m=0,t=0;
//先把数据全部写入到excel表格中
for (int j=0;j<dt.Columns.Count;j++)
{
for (int i=0;i<dt.Rows.Count;i++)
{

if (drname==dt.Rows[i][j].ToString())
{

worksheet.Cells[3 + i, 1] = dt.Rows[i][0].ToString();
worksheet.Cells[3 + i, 2] = dt.Rows[i][1].ToString();
worksheet.Cells[3 + i, 3] = dt.Rows[i][2].ToString();
worksheet.Cells[3 + i, 4] = dt.Rows[i][3].ToString();
worksheet.Cells[3 + i, 5] = dt.Rows[i][4].ToString();
worksheet.Cells[3 + i, 6] = dt.Rows[i][5].ToString();
worksheet.Cells[3 + i, 7] = dt.Rows[i][6].ToString();
worksheet.get_Range(worksheet.Cells[3 + i, 1], worksheet.Cells[3 + i, 7]).Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);

t++;
m++;  }

//合并内容相同的单元格
else
{
drname = dt.Rows[i][j].ToString();
if (n<j)
{
worksheet.get_Range(worksheet.Cells[3 + dt.Rows.Count - m, j], worksheet.Cells[3 + dt.Rows.Count - 1, j]).Value2 = "";
worksheet.get_Range(worksheet.Cells[3 + dt.Rows.Count - m, j], worksheet.Cells[3 + dt.Rows.Count - 1, j]).Merge(Missing.Value);
worksheet.get_Range(worksheet.Cells[3 + dt.Rows.Count - m, j], worksheet.Cells[3 + dt.Rows.Count - 1, j]).Value2 = dt.Rows[dt.Rows.Count - 1][j - 1].ToString();

n=j;

}

else
{   worksheet.get_Range(worksheet.Cells[3 + i-t, j + 1], worksheet.Cells[3 + i - 1, j + 1]).Value2="";
worksheet.get_Range(worksheet.Cells[3+i-t,j+1], worksheet.Cells[3 + i-1, j+1]).Merge(Missing.Value);
worksheet.get_Range(worksheet.Cells[3 +i-t, j+1], worksheet.Cells[3 + i - 1, j+1]).Value2 = dt.Rows[i-1][j].ToString();
t = 1;

}

m = 1;
}
}
t = 1;

n=j;

}
ExcelOperate.SetHAlignCenter(worksheet, worksheet.Cells[1, 1], worksheet.Cells[dt.Rows.Count+2, dt.Columns.Count]);
ExcelOperate.SetVAlignCenter(worksheet, worksheet.Cells[1, 1], worksheet.Cells[dt.Rows.Count + 2, dt.Columns.Count]);
string  save_path = Server.MapPath("xwn.xls") ;
workbook.SaveAs(save_path, Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

ExcelOperate.Dispose(worksheet, workbook, app);

Response.Write("执行完成!");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: