C# 如何在不显示Excel互操作保存对话框的情况下保存工作簿?
我必须创建一个控制台应用程序,将C# 如何在不显示Excel互操作保存对话框的情况下保存工作簿?,c#,.net,excel,save,office-interop,C#,.net,Excel,Save,Office Interop,我必须创建一个控制台应用程序,将数据集导出到Excel。问题是它不应该弹出保存窗口,它应该自动创建Excel文件。到目前为止,我有以下代码,但我不知道如何使它自动保存。非常感谢您的帮助 public static void CreateWorkbook(DataSet ds, String path) { int rowindex = 0; int columnindex = 0; Microsoft.Office.Interop.Excel.Application w
数据集
导出到Excel。问题是它不应该弹出保存窗口,它应该自动创建Excel文件。到目前为止,我有以下代码,但我不知道如何使它自动保存。非常感谢您的帮助
public static void CreateWorkbook(DataSet ds, String path)
{
int rowindex = 0;
int columnindex = 0;
Microsoft.Office.Interop.Excel.Application wapp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet wsheet;
Microsoft.Office.Interop.Excel.Workbook wbook;
wapp.Visible = false;
wbook = wapp.Workbooks.Add(true);
wsheet = (Worksheet)wbook.ActiveSheet;
try
{
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
wsheet.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName;
}
foreach (DataRow row in ds.Tables[0].Rows)
{
rowindex++;
columnindex = 0;
foreach (DataColumn col in ds.Tables[0].Columns)
{
columnindex++;
wsheet.Cells[rowindex + 1, columnindex] = row[col.ColumnName];
}
}
}
catch (Exception ex)
{
String err = ex.Message;
}
wapp.UserControl = true;
}
publicstaticvoidcreateworkbook(数据集ds,字符串路径)
{
int rowindex=0;
int columnindex=0;
Microsoft.Office.Interop.Excel.Application wapp=新的Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet wsheet;
Microsoft.Office.Interop.Excel.Workbook wbook;
wapp.Visible=false;
wbook=wapp.Workbooks.Add(true);
wsheet=(工作表)wbook.ActiveSheet;
尝试
{
对于(int i=0;i
尝试调用工作簿的SaveAs
方法。对于大量参数,请尝试将Type.Missing
传递给除第一个(文件名)以外的所有参数。请参阅
WorkBook.SaveAs()
的所有参数都是可选的,但如果需要,您可以对大多数参数使用Type.Missing
典型的调用如下所示:
wbook.SaveAs("c:\\temp\\blah", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wbook.Close();
注意,我没有包括文件扩展名;Excel将为您设置该选项
描述每个参数。使用
openxmlsdk
生成文档,而不是自动生成;它更可靠
wapp.DisplayAlerts = false;
将属性设置为
false
将停止显示其所有工作簿的所有警报。使用DisplayAlerts属性。它非常简单和快速
private void SaveAs(Excel.Workbook WorkBook, string FileName)
{
m_Saving = true;
try
{
if (Global.CreatingCopy)
this.ExcelApp.DisplayAlerts = false;
WorkBook.SaveAs(FileName);
}
finally
{
m_Saving = false;
if (this.ExcelApp.DisplayAlerts == false)
this.ExcelApp.DisplayAlerts = true;
}
}
保存文件时,千万不要让Excel定义文件的类型。因为格式可能会改变
如果原始文档为.xls,当前用户的office 2013默认格式为.xlsx,则Excel会将该文件转换为.xlsx,没有Excel 2010或更高版本的用户无法打开该文件。将
冲突解决方案添加到XlSaveConflictResolution.xlLocalSessionChanges
并将应用程序的DisplayAlerts
属性设置为false
,这样窗口就不会显示
m_xlApp.DisplayAlerts = false;
// Quit Excel and clean up.
m_xlWorkbook.SaveAs(Filename: m_xlFilePath, FileFormat: excelFileExtension,
Password: false, ReadOnlyRecommended: XlSaveAsAccessMode.xlNoChange,
ConflictResolution: XlSaveConflictResolution.xlLocalSessionChanges);
m_xlWorkbook.Close();
有关更多信息,请参阅。ya我尝试过,但它需要很多参数:void SaveAs(对象文件名、对象文件格式、对象密码、对象WriteResPassword、对象ReadOnlyRecommended、对象CreateBackup、xlsaveAsAccess模式访问模式、对象冲突解决、对象AddToMru、对象TextCodepage、对象TextVisualLayout、对象本地); 我不知道如何使用它…我认为只有前两个是必需的,所有其他的都可以用作缺少的参数。那么“对象文件名”是什么呢?你能给我一个电话吗example@ha1:只需使用字符串Object
是所有其他.NET类型的基本类型,因此您可以传递任何类型来代替Object
type参数。请提供响应和解决方案的详细信息
m_xlApp.DisplayAlerts = false;
// Quit Excel and clean up.
m_xlWorkbook.SaveAs(Filename: m_xlFilePath, FileFormat: excelFileExtension,
Password: false, ReadOnlyRecommended: XlSaveAsAccessMode.xlNoChange,
ConflictResolution: XlSaveConflictResolution.xlLocalSessionChanges);
m_xlWorkbook.Close();