http://www.aspxcn.com/dotnetarticle/html/97.html
word 和 Excel都行。

解决方案 »

  1.   

    在asp.net中用excel导出
    在.net中excel导出有多种方法。比较常用的有一下几种:
    1.用OWC(Office Web Components)
    首先要在项目->添加引用->COM中添加Microsoft Office Web Components ,然后定义一个OWC.SpreadsheetClass 如:Dim xlsheet As New OWC.SpreadsheetClass 然后就可以向sheet中添加数据了,使用xlsheet.Cells(2, 2) = "表格填充内容" 格式添加数据,使用xlsheet.Range("B3:F3") 设置单元格的样式。
    最后用xlsheet.ActiveSheet.Export(Path, OWC.SheetExportActionEnum.ssExportActionNone) 的方式将excel文件保存在硬盘上。
    这种方法优点是无需系统权限分配,缺点是对于单元格的格式属性设置不够丰富,某些属性无法设置或者是设置比较麻烦。
    2.用Excel Application
    用这种方法之前首先要给aspnet用户设置权限,否则程序会不能执行的。设置权限的过程如下:
    在运行处运行“dcomcnfg.exe”启动“分布式COM配置属性”
    在应用程序列表框中双击“Microsoft Excel 应用程序”
    选择“安全性”标签
    选择“使用自定义访问权限”单选框,点击“编辑”按钮
    添加本地“ASPNET”用户,权限为“允许访问”
    在“安全性”标签中选择“使用自定义启动权限”单选框,点击“编辑”按钮
    添加本地“ASPNET”用户,权限为“允许访问”
    以上工作在需要执行excel导出的服务器上进行一次即可。
    以后在每个工程中要选择“项目->添加引用中选择“COM”标签,添加“Microsoft Excel x.x Object Library””到项目中,以后就可以执行excel导出操作了。
    在需要导出的时候首先定义一下excel application、excel Workbooks、excel Worksheets变量:
    Dim excelApp As Excel.Application
    Dim excelBook As Excel.Workbook
    Dim excelSheet As Excel.Worksheet
    excelApp = New Excel.Application
    excelBook = excelApp.Workbooks.Add
    excelSheet = excelBook.Worksheets(1)
    之后就可以将数据放入excel Sheet中了,而且可以方便的设置单元格的各个属性参数。比如,设置行高可以用excelSheet.Rows(intRowIndex).RowHeight = dblRowHeight
    用这种方法可以实现几乎全部的excel功能,如果对于某个功能不知道用excel application如何实现,可以在excel中通过“记录宏-执行操作-查看宏代码”的方法得到实现该功能所用到的属性和方法。
    最后要将数据保存到硬盘上,只需用excelBook.SaveAs(FileName)方法即可。
    这种方法的优点是功能强大,可以实现几乎所有的excel功能。缺点是需要权限配置,而且运行时间比较长,占用资源比较高,结束后可能在系统中有残留的EXCEL进程。
    3.直接存为文本文件
    直接将数据按照html表格的格式存为文本文件,扩展名改成xls就可以用excel打开,或者按照Office XP之后支持的xml格式,这种格式所能实现的功能同样强大,缺点就是需要知道各种功能或者excel单元格格式的xml表达方法,工作量比较大。
    这种方法优点是不需要权限配置(只需能够向硬盘写文件的权限就可以),执行速度快。缺点是需要知道大量的excel格式的xml或者html表达方式,前期准备工作量大。
      

  2.   

    //将数据集导到excel里 以 CSV 格式 //XLS文件一般使用制表符分割 char(9)
    private void DataSetToExcelCsv(DataSet ds) 
    {
    //生成Excel标题
    string strTemp,strFileName;
    string strExcel="";
    char chEnter=(char)10; //换行符
    strExcel=lblReportTime.Text+chEnter;
    strExcel += lblReportCount.Text+chEnter;
    strExcel += ",,             通话总次数(次),,,,             通话总时长(分),,,,           通话总金额(元)"+chEnter+"话机号码,    月份,    国际,    国内,  港澳台,    合计,    国际,    国内,  港澳台,   合计,    国际,    国内,  港澳台,    合计";

    int I,J;
    byte[] bExcel;
    DataTable dt =ds.Tables[0];
    DataRow Dr;

    strExcel = strExcel + chEnter;
    //给Excel中写入数据
    for(I = 0;I< dt.Rows.Count;I++)
    {
    Dr=dt.Rows[I];
    strTemp = "";
    for(J = 0;J<dt.Columns.Count ;J++)
    {
    strTemp = strTemp + Dr[J].ToString().Trim() + ",";
    }
    strTemp = strTemp + chEnter;
    strExcel = strExcel + strTemp;
    }
    //生成文件名: 当前年月日小时分钟秒+查询的起始年月 +查询的终止年月 + 随机数
    Random rd=new Random(int.Parse(DateTime.Now.ToString("MMddhhmmss")));
    strFileName =DateTime.Now.ToString("yyyyMMdd")+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second+txtBeginTime.Text.Trim()+txtFinishTime.Text.Trim()+rd.Next(999999).ToString()+ ".CSV";

    bExcel= Encoding.Default.GetBytes(strExcel);
    FileStream fs=new FileStream(Server.MapPath(".") + "\\..\\..\\excel-file\\" + strFileName, FileMode.OpenOrCreate);
    fs.Write(bExcel, 0, bExcel.Length);
    fs.Close();

    string test="../../excel-file/" + strFileName;

    Response.Redirect(test);
    }
      

  3.   

    http://www.csdn.net/Develop/Read_Article.asp?Id=20283修改以下比较好用