如何在不显示Excel互操作的保存对话框的情况下保存工作簿?

ha1*_*gen 12 .net c# excel save office-interop

我必须创建一个导出DataSet到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;
}
Run Code Online (Sandbox Code Playgroud)

Igb*_*man 29

所有参数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();
Run Code Online (Sandbox Code Playgroud)

请注意,我没有包含文件扩展名; Excel将为您设置.

Workbook.SaveAs方法(Microsoft.Office.Tools.Excel)| Microsoft Docs描述了每个参数.


Fel*_*ano 5

尝试调用SaveAs工作簿的方法.对于批量参数,尝试传递Type.Missing给所有参数,但第一个(文件名).


小智 5

添加ConflictResolutionXlSaveConflictResolution.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();
Run Code Online (Sandbox Code Playgroud)

请参见XlSaveConflictResolution枚举(Microsoft.Office.Interop.Excel)| Microsoft Docs获取更多信息。