1

我正在做一个小程序来打开一个 Excel 电子表格,更新它然后将其保存到一个新文件中,然后关闭所有内容。

SaveFileDialog除了当我使用弹出窗口隐藏在excel窗口后面时,它大部分都在工作,仅在第一次尝试时(在尝试之后,由按钮触发,所有工作都会SaveFileDialog脱颖而出)。

有谁知道我如何在第一次发生这种情况时发生这种情况?

我还想知道是否可以突出显示文件名,以便用户可以附加到文件名而不是直接覆盖它,通常是错误的?

这是我用于保存文件对话框的代码...

SaveFileDialog saver = new SaveFileDialog();
            saver.FileName = "test";
            saver.DefaultExt = "xls";
            saver.Filter = "Microsoft Office Excel Workbook |(*.xls*)";
            saver.CheckFileExists = false;
            saver.InitialDirectory = "c:\\George";

        if (saver.ShowDialog() == DialogResult.OK)
            //MessageBox.Show("Save Dialog launched");
            excelWorkbook.SaveAs(saver.FileName, Type.Missing, Type.Missing,Type.Missing,
            Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing);

非常感谢,乔治

4

2 回答 2

0

IIRC 您必须将OwnerWndProc设置为 excel 应用程序的主窗口。

于 2010-03-03T14:24:09.550 回答
0

一个hacky但有效的解决方案:

        saver.FileName = "test";
        saver.DefaultExt = "xls";
        saver.Filter = "Microsoft Office Excel Workbook |(*.xls*)";
        saver.CheckFileExists = false;
        saver.InitialDirectory = "c:\\George";
        Form dummyForm = new System.Windows.Forms.Form();
    if (saver.ShowDialog(dummyForm) == DialogResult.OK)
        //MessageBox.Show("Save Dialog launched");
        excelWorkbook.SaveAs(saver.FileName, Type.Missing, Type.Missing,Type.Missing,
        Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing);

我所做的只是创建一个新的虚拟表单并将您的 SaveFileDialogue 扔到上面。您可以尝试将所有者设为您的实际表格,但认为这是短期内最有可能解决您的问题的方法。

于 2012-06-04T23:14:54.400 回答