Я пытаюсь решить возникшую проблему с помощью COMException. Это мой код:
Ошибка возникает в Workbook Original = new Workbook (результат [0]);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MahApps.Metro.Controls;
using MahApps.Metro;
using Microsoft.Win32;
using System.Windows.Forms;
using System.Data;
using Microsoft.Office.Interop.Excel;
namespace KPI_Generator_v3
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : MetroWindow
{
string [] result;
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
public MainWindow()
{
InitializeComponent();
}
private void exit_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void browse_Click(object sender, RoutedEventArgs e)
{
// Create OpenFileDialog
instructionslbl.Visibility = Visibility.Hidden;
dlg.Multiselect = true;
dlg.ShowDialog();
result = dlg.FileNames;
dlg.DefaultExt = ".xls";
dlg.Filter = "XLS Files (*.xls)|*.xls";
foreach (string fileName in result)
{
displayFilesBox.Text += fileName + System.Environment.NewLine;
}
SelectedFileslbl.Visibility = Visibility.Visible;
displayFilesBox.Visibility = Visibility.Visible;
generateBtn.Visibility = Visibility.Visible;
}
private void generate_Click(object sender, RoutedEventArgs e)
{
Workbook Original = new Workbook(result[0]);
for (int i = 1; i <= result.Length; i++)
{
Workbook next = new Workbook(result[i]);
Worksheet newOGsheet = Original.Worksheets.Add();
Worksheet nextSheet = next.Worksheets[0];
nextSheet.Copy(newOGsheet);
}
}
}
}
Теперь ... Хотя приведенный выше код, вероятно, не будет работать, я получаю сообщение об ошибке
Ошибка System.Runtime.InteropServices.COMException в mscorlib.dll
с дополнительной информацией говоря
HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
После того, как я погуглил довольно долгое время, я скачал dependency walker и получил следующий результат:
Я понятия не имею, что делаю, и я был бы очень признателен за некоторую помощь! Спасибо
EDIT: REGEDIT изображение HKEY CLASSES_ROOT (при необходимости)
EDIT2: изображение ошибки
for (int i = 1; i <= result.Length; i++)
. Я думаю, что необходимоfor (int i = 1; i < result.Length; i++)
уведомление<=
изменить на<
. Вы превышаете массив результатов на 1. - person Michael Petch   schedule 23.09.2014