日期:2014-05-20  浏览次数:20984 次

c#实现excel输出文件后保存的问题和再次输出文件的覆盖问题,急!
前提: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文件时,提示路径选择和文件名变更;并在再输出一次,仍是提示路径选择和文件名变更。如何实现?


------解决方案--------------------
book.Saved = false;
book.SaveCopyAs( " ");
------解决方案--------------------

------解决方案--------------------
book.Saved = false;
book.SaveAs(...);
------解决方案--------------------
什么年代了,还用这么老套的方法实现?
用数据流撒,效率高哦!