前提:form方式下C#代码实现从datatable中输出数据到excel文件中
代码:
//DataTable 对象
int cols = dt.Columns.Count;
int rows = dt.Rows.Count;//excel对象
Excel.ApplicationClass excel = new Excel.ApplicationClass();
excel.Visible = false;
object missing = System.Reflection.Missing.Value;
Excel.Workbook book = excel.Workbooks.Add(missing);
Excel.Worksheet sheet = (Excel.Worksheet)book.ActiveSheet;......//省略datatable向excel.Cells中转换数据的过程代码try
{
         //excel.Save (excelfilepath);//excelfilepath为excel文件保存路径和文件名
book.SaveAs(excelfilepath,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlNoChange,1,true,missing,missing); book.Close(false,excelfilename,true);
}
catch
{
......//省略回收代码
}
问题:
1、excel.Save 和book.SaveAs方法有什么不同?为什么使用excel.Save方法提示保存路径,但文件名使用“Book1.XLS”,并且还要在“我的文档”下再保存一个excel文件?而使用book.SaveAs方法输出的excel文件,不提示保存路径,直接存到指定的excelfilepath下,且不会往“我的文档”下再保存文件?
2、使用book.SaveAs方法输出excel文件保存后,若再输出一次,文件提示覆盖时,选择“否”,会出现往“我的文档”下保存文件的提示?这是为什么?能不能避免往“我的文档”下保存文件。
3、若想实现功能:输出excel文件时,提示路径选择和文件名变更;并在再输出一次,仍是提示路径选择和文件名变更。如何实现?

解决方案 »

  1.   

    book.Saved = false;
    book.SaveCopyAs("");
      

  2.   

    前提应是在System.Windows.Forms.Form下实现
      

  3.   

    book.Saved = false;
    book.SaveCopyAs("");是实现什么功能的?能说明一下嘛?
      

  4.   

    即每次保存弹出保存对话框选择路径并确认文件名。
    如果book.Saved = true;就自动覆盖以前保存的。
      

  5.   

    代码写成如下嘛?book.Saved = false;
    book.SaveCopyAs("");
    book.SaveAs(excelfilepath,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlNoChange,1,true,missing,missing);好像还是不行,使用上面的方法输出excel文件保存后,若再输出一次,文件提示覆盖时,选择“否”,还是会出现往“我的文档”下保存文件的提示,为什么呢?若将try...catch...部分全部不要就是在代码中不写任何save方法,以上代码执行依然会出现类似提示“book1.xls已经存在,修改或覆盖:是、否、取消”,这是为什么?我并没有要保存呀?为什么会出现保存提示那?
      

  6.   

    book.SaveAs(excelfilepath,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlNoChange,1,true,missing,missing);
    这一句不要了。book.Saved = false;
    book.SaveCopyAs("");这就已经保存了。
      

  7.   

    book.Saved = false;
    book.SaveAs(...);
      

  8.   


    不过这样和
    将try...catch...部分全部不要,也就是在代码中不写任何save方法,代码执行依然会出现和
    book.Saved = false;
    book.SaveCopyAs("");//这就已经保存了。
    方式类似的提示“book1.xls已经存在,修改或覆盖:是、否、取消”,
    两者有区别嘛?
    在代码中不写任何save方法,代码执行后,为什么还是会出现保存提示?
      

  9.   

    '3、若想实现功能:输出excel文件时,提示路径选择和文件名变更;并在再输出一次,仍是提示路径选择和文件名变更。如何实现?'保存提示不是你要求的吗?到底想实现什么功能?
      

  10.   

    to:scow(怡红快绿) 
    是我理解出现偏差,你的方法可行!to:qqqvera(大頭兵) 
    用数据流撒??
    如何实现呢?能说明一下不?
      

  11.   

    1。 使用excel.save方法 会在本地目录中保存一个副本(好像是我的文档) 使用workbook.saveas 不会产生文件副本 这个你查看一下帮助就知道了2. 屏蔽弹出提示,使用excel.displayalerts 屏蔽 3. 如果文件已经产生,而是你需要将文件另存,那这个很简单,使用File类就行了 File.copy() 参数就是源文件路径 和 需要另存文件的路径