前提: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文件时,提示路径选择和文件名变更;并在再输出一次,仍是提示路径选择和文件名变更。如何实现?
代码:
//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.SaveCopyAs("");
book.SaveCopyAs("");是实现什么功能的?能说明一下嘛?
如果book.Saved = true;就自动覆盖以前保存的。
book.SaveCopyAs("");
book.SaveAs(excelfilepath,missing,missing,missing,missing,missing,Excel.XlSaveAsAccessMode.xlNoChange,1,true,missing,missing);好像还是不行,使用上面的方法输出excel文件保存后,若再输出一次,文件提示覆盖时,选择“否”,还是会出现往“我的文档”下保存文件的提示,为什么呢?若将try...catch...部分全部不要就是在代码中不写任何save方法,以上代码执行依然会出现类似提示“book1.xls已经存在,修改或覆盖:是、否、取消”,这是为什么?我并没有要保存呀?为什么会出现保存提示那?
这一句不要了。book.Saved = false;
book.SaveCopyAs("");这就已经保存了。
book.SaveAs(...);
不过这样和
将try...catch...部分全部不要,也就是在代码中不写任何save方法,代码执行依然会出现和
book.Saved = false;
book.SaveCopyAs("");//这就已经保存了。
方式类似的提示“book1.xls已经存在,修改或覆盖:是、否、取消”,
两者有区别嘛?
在代码中不写任何save方法,代码执行后,为什么还是会出现保存提示?
是我理解出现偏差,你的方法可行!to:qqqvera(大頭兵)
用数据流撒??
如何实现呢?能说明一下不?