先说一下思路,点击"导入"按钮时,弹出对话框,以时间为默认的名字保存,但是要保存2次,产生2个文件,不知道是怎么回事!以下是代码:(代码可用,调试通过)
private void btnExcelOut_Click(object sender, System.EventArgs e)
{
      int intCount =  this.dtExcel.Rows.Count; 
      if( intCount == 0 )
      {
        //没有记录
        MessageBox.Show("没有记录!");
      }       SaveFileDialog dlgSave = new SaveFileDialog();
      dlgSave.Filter= "All files (*.*)|*.*";
      dlgSave.DefaultExt= ".xls";
      dlgSave.FileName= DateTime.Today.ToString()+ ".xls";
      if(dlgSave.ShowDialog() == DialogResult.OK)
      {
         //导出数据

         this.CreateExcel(this.dtExcel,dlgSave.FileName);
      }
}public void CreateExcel(System.Data.DataTable dtName,string fileName)
{
   try
   {
     Excel.Application excelKccx = new Excel.Application();//创建excel对象
     excelKccx.Workbooks.Add(true);//创建excel工作薄

     int row = 2;
     //把数据表的各个信息输入到excel表中
     for(int i = 0; i < dtName.Columns.Count; i ++)//取字段名
     {
         excelKccx.Cells[1,i + 1] = dtName.Columns[i].ColumnName.ToString();
     }
     for(int i = 0; i < dtName.Rows.Count; i ++ )//取记录值
     {
         for(int j = 0; j < dtName.Columns.Count; j ++)
         {      
     excelKccx.Cells[row,j + 1] = dtName.Rows[i][j].ToString();
}
row ++;
     }
     excelKccx.Save(fileName);
     excelKccx.Visible = true;//使excel可见*/
   }
   catch
   {
   }
}

解决方案 »

  1.   

    excelKccx.Save(fileName);你把这句话去掉,看有几个文件。因为你在创建Excel的时候好像有个defaultpath。
    另外datatable到excel的绑定,有个简单的数据绑定,跟datagrid的绑定差不多,记不清了,好像是个value2啥的
      

  2.   

    excelKccx.Save(fileName);这里
    if(dlgSave.ShowDialog() == DialogResult.OK) 这里一共2次
    btnExcelOut_Click里面直接调CreateExcel就可以了,不用再New个保存对话框了
      

  3.   

    笨!
    生成HTML改后缀为xls就可以了。
      

  4.   

    生成HTML?楼上的你没有搞清楚吧!
      

  5.   

    excelKccx.Save(fileName);
    调用这句话后,它就自动给你保存了,
      

  6.   

    你前面不用保存最后用
    excelKccx.SaveAs(你想要的文件名);