1.直接写成文本文件,后缀改成.csv
2.调用EXCEL的COM控件.

解决方案 »

  1.   

    7.到处到 Excel
     导出内容到 Excel 是通过使用 COM 组件实现的. Excel 系统中主文件 Excel.exe 本身就是 COM 组件,通过在.NET 项目引用Excel.exe 文件可以实现对  Excel的功能控制与 COM 组件相互操作是通过使用 "包装类(Wrapper Class)" 和 类似 "代理"(Proxy) 的机制实现的.
    包装类使.NET 程序可以识别 COM 组件提供的接口,而代理类侧提供对 COM 接口的访问.using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    using Microsoft.Office.Interop.Excel;namespace CSharpPrj
    {
        class ExcelExport
        {
            private object _optionValue = System.Reflection.Missing.Value;        //如果 Excel 安装在计算机上,侧导出表格内容到Excel
            public void ExportTesks(DataSet ds,DataView dv,DataGridView dgv)
            {
                           //定义 Application 对象,此对象表示整个 Excel 程序
                Microsoft.Office.Interop.Excel.Application excelApp;            //定义 Workbook 对象,此对象代表工作薄
                Microsoft.Office.Interop.Excel.Workbook wb;            //定义Worksheet 对象,此对象表示 Excel 中的一张工作表
                Microsoft.Office.Interop.Excel.Worksheet ws;            //定义Range 对象,此对象 代表单元格区域
                Microsoft.Office.Interop.Excel.Range r;            int row = 1;
                int cell = 1;
                int priorityHeight, priorityNoraml, priorityLow;            try
                {
                    //初始化 Application 对象 excelApp
                    excelApp = new Microsoft.Office.Interop.Excel.Application();
                    //在工作薄的一个工作表上创建任务列表
                    wb=excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);                //引用第一行第一列的                ws = (Worksheet)wb.Worksheets[1];
                }
                        
                catch (Exception ex)
                {
                    throw ex;
                }
                //命名工作表的名称为"Task Managere"
                ws.Name = "Task Management";            // 设置第一行第一列的值单元格的值
                ws.Cells[row, 1] = "Tasks as of" + System.DateTime.Now.ToShortDateString();            //引用第一行第一列的单元格,并显示转换为Range 类型            r =(Range)ws.Cells[row, 1];
                
                // 设置单元格的字体加黑
                r.Font.Bold = true;
               
                // 遍历数据表中的所有列 ...........
                //创建行,把数据试图记录输出到对应的Excel 单元格...                  }
        }
    }
      

  2.   

    try
    ...{   string filename;
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Title = "请选择将导出的EXCEL文件存放路径";
    sfd.Filter="excel文档(*.xls)|*.xls";
    //sfd.OpenFile(); 
    sfd.ShowDialog();
    if (sfd.FileName != "")
    ...{
    if(sfd.FileName.LastIndexOf(".xls")<=0)
    ...{
    sfd.FileName=sfd.FileName+".xls";
    }
    filename=sfd.FileName;
    if(System.IO.File.Exists(filename))
    ...{
    System.IO.File.Delete(filename);  
    }
    Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
    if (xlApp == null)
    ...{
    MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
    return;
    }
    Excel.Workbooks workbooks = xlApp.Workbooks;
    Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
    Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
    DataTable dt1 = (DataTable)dataGrid2.DataSource;
    float percent=0;
    long rowRead=0;
    if(dt1==null) 
    ...{
    MessageBox.Show("1");
    return;
    }
    long totalCount=dt1.Rows.Count; 
    this.progressBar1.Visible=true;
    for (int i = 0; i < dt1.Rows.Count; i++)
    ...{
    this.progressBar1.Value=i;
    for (int j = 0; j < dt1.Columns.Count; j++)
    ...{
    if (i == 0)
    ...{
    worksheet.Cells[1, j + 1] = dt1.Columns[j].ColumnName;
    }
    worksheet.Cells[i + 2, j + 1] = dt1.Rows[i][j].ToString();
    }
    rowRead++;
    percent=((float)(100*rowRead))/totalCount;    
    this.progressBar1.Text= "正在导出数据["+ percent.ToString("0.00")  +"%]...";
    }
                        this.progressBar1.Visible=false;
    workbook.Saved = true;
    workbook.SaveCopyAs(filename);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
    worksheet = null;
    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
    workbook = null;
    workbooks.Close();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
    workbooks = null;
    xlApp.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
    xlApp = null;
    MessageBox.Show("导出Excel完成!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    //button2_Click(null,null);}
    }
    catch(Exception ex)
    ...{
    MessageBox.Show("导出Excel失败!"+ex.Message,"错误",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }