如何把显示的数据导出,用excel形式保存
如我添加了一个按钮“以excel保存”,我希望出来一个另存为的对话框,,那我在这个按钮下该怎么写程序?

解决方案 »

  1.   

    以下是我在一个项目中编写的程序代码,以一函数的形式存在,其参数为一DataView,其作用是把DataView的内容导出到Excel表格。请参考。
    public static void exportDataView2Excel(ref DataView dv) //导出DataView内容至Excel表格
    {
    Excel.Application excel = new Excel.Application();
    if(excel == null)
    {
    MessageBox.Show("不能打开Excel应用程序!","警告");
    return;
    }
    try
    {
    Excel._Workbook activeBook = excel.Application.Workbooks.Add(true);
    Excel._Worksheet activeSheet = (Excel._Worksheet)activeBook.ActiveSheet; 
     
    ((Excel.Range)activeSheet.Cells[1,1]).NumberFormat = Excel.XlParameterDataType.xlParamTypeVarChar;


    //生成列标题
    int col = dv.Table.Columns.Count;
    for(int t=0; t<col; t++)
    {
    excel.Cells[1,t+1] = dv.Table.Columns[t].ToString();
    activeSheet.get_Range(excel.Cells[1,t+1],excel.Cells[1,t+1]).HorizontalAlignment 
    = Excel.XlVAlign.xlVAlignCenter;//设置列标题的字段格式为居中对齐  

    }

    //输出内容到报表
    int row = 2;

    // activeSheet.Columns.
    foreach(DataRowView drv in dv)
    {
    //activeSheet.get_Range(excel.Cells[row,1],excel.Cells[row,1]).NumberFormat 
    // = Excel.XlParameterDataType.xlParamTypeUnknown;

    //excel.Cells[row,1]  = drv.Row[0].ToString()+"\r"; //后面加"\r"防止Excel把数字型字符串当数字对待
    for(int t=0; t<col; t++)
    {
    excel.Cells[row,t+1]  = drv.Row[t].ToString()+"\r"; //后面加"\r"防止Excel把数字型字符串当数字对待

    }

    row++;
    }
    }
    catch(Exception ex)
    {
    proThread.Abort();
    MessageBox.Show(ex.ToString(),"警告");
    return;
    }
    proThread.Abort();
    excel.Visible = true;
    excel = null;
     
    }
      

  2.   

    忘记说了,proThread.Abort()为一线程的结束函数,其作用是在导出Excel是显示进度,在该函数执行前启动。注意在应用时注意取消。