VTSO: иногда пользователи не могут открыть файл Excel, созданный из приложения C # Winform - PullRequest
1 голос
/ 21 марта 2011

Одно из наших приложений позволяет пользователям создавать файл Excel с использованием шаблона Excel (который устанавливается / развертывается с помощью Click Once).Это приложение VSTO.

Файл Excel генерируется путем сохранения некоторых значений в реестре и «вызова» шаблона с использованием следующего кода (столбцы извлекаются из двух разных списков, «требуемого» списка и«необязательный список»:

private void myButtonExport_Click(object sender, EventArgs e)
{
    if (CurrentTableRow == null) return;
    if (CurrentTemplateRow == null) return;

    List<string> requiredColumns = excelTemplateTableDS.GetColumnsList(false);
    List<string> myColumns = userTableDS.GetColumnsList(false);
    string selectStatement;

    try
    {
        CustomerListColumnSelect f = new CustomerListColumnSelect(myColumns, requiredColumns);
        if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            selectStatement = string.Format("SELECT {0} FROM [{1}]", string.Join(", ", f.SelectedColumns.ToArray()), CurrentTableRow.TableName);

            Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Company\Collection Development");
            rk.DeleteValue("TemplateTableName", false);
            rk.DeleteValue("TemplateSelectStatement", false);
            rk.SetValue("TemplateTableName", CurrentTableRow.TableName, Microsoft.Win32.RegistryValueKind.String);
            rk.SetValue("TemplateSelectStatement", selectStatement, Microsoft.Win32.RegistryValueKind.String);
            rk.Close();

            // Launch Excel
            AppLog.WriteEvent("CreateCustomerList", TraceEventType.Information,
                string.Format("Creating customer list [{0}] using table [{1}]", CurrentTemplateRow.TemplateName, CurrentTableRow.TableName));
            if (Debugger.IsAttached)
            {
                FileInfo fi = new FileInfo(CurrentTemplateRow.Path);
                string newPath = string.Format(@"C:\Documents and Settings\mpetrie\My Documents\Visual Studio 2010\Projects\Collection Development Templates\{0}\bin\Release\{1}", CurrentTemplateRow.TemplateName, fi.Name);
                // If running under DEBUG (and app not installed), then launch latest version
                Process.Start(newPath);
            }
            else
            {
                Process.Start(CurrentTemplateRow.Path);
            }
        }
        f.Dispose();
    }
    catch (Exception ex)
    {
        MessageBox.Show(this, CurrentTemplateRow.Path + "\r\n" + ex.Message, "Process.Start", MessageBoxButtons.OK, MessageBoxIcon.Error);
        ResetSteps(sender, e);
        return;
    }
}

Затем каждый шаблон имеет «кучу» кода для загрузки данных (используя значения в реестре) в таблицу. (Эта часть никогда не имеет проблемы,это ПОСЛЕ того, как файл Excel был сохранен, и кто-то пытается его открыть).

Я новичок в этом приложении и VSTO в целом. Что мне немного неясно, так это то, как файл сохраняется. Я предполагаю,когда он сохраняется, весь связанный с ним «код» из шаблона НЕ сохраняется вместе с файлом, сохраняются только данные ...

Иногда наши пользователи не могут открыть файл. Excel никогдавыдает ошибку, он просто "раскручивается", как будто пытается открыть файл. Мы ждали до 30 минут или дольше без результатов. Похоже, файл открывается, но никогдаr "нарисовано" (оказано), но это только предположение.Это очень случайно.Иногда один и тот же файл может быть открыт другими пользователями, а иногда пользователь, у которого возникли проблемы, может повторить попытку позже, и файл открывается очень хорошо.

У нас есть несколько «идей», из-за которых может возникнуть проблема: AntiVirusСетевые акции.Хотя это такая случайная проблема, мы не знаем, как ее отладить, когда это происходит (это может не повториться часами или днями).Пользователи сообщают, что у них нет проблем с открытием других файлов Excel, только файлов, сгенерированных этим приложением.

У кого-нибудь есть идеи, что может быть причиной этого?

Шейн

1 Ответ

0 голосов
/ 24 марта 2011

Мое описание этой проблемы было полностью неверным. Увидев проблему из первых рук сегодня. Проблема в том, что файл открывается, но не виден. Я собираюсь начать новую тему, которая лучше описывает проблему.

...