• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z C#, błąd - hresult exception: 0x80040154 (regdb_e_classnotreg)).

Mały hosting, OGROMNE możliwości
0 głosów
733 wizyt
pytanie zadane 20 lutego 2023 w C# przez MarekPrzywarek Nowicjusz (220 p.)

Witam. Kod bez błędów, no kiedy zaczynam kompilować to wyskakuje błąd.

Jak rozwiązać ten problem?smiley

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
using ExcelObj = Microsoft.Office.Interop.Excel;


namespace sourceX
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenExcelTable(dataGridView1);
        }
        public static void OpenExcelTable(DataGridView TableInf)
        {
            OpenFileDialog odf = new OpenFileDialog();
            odf.DefaultExt = "*xls,*.xlsx";
            odf.Filter = "Excel Sheet (*.xlsx)|*.xlsx";
            odf.Title = "Wybierz File";

            ExcelObj.Application app = new ExcelObj.Application();
            ExcelObj.Workbook workbook;
            ExcelObj.Worksheet NwSheet;
            ExcelObj.Range ShtRange;

            DataTable dt = new DataTable();
            if (odf.ShowDialog() == DialogResult.OK)
            {
                

                workbook = app.Workbooks.Open(odf.FileName, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                Missing.Value);

                NwSheet = (ExcelObj.Worksheet)workbook.Sheets.get_Item(1);
                ShtRange = NwSheet.UsedRange;
                for(int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
                {
                    dt.Columns.Add(new DataColumn((ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString()));
                }
                dt.AcceptChanges();

                String[] columnNames = new String[dt.Columns.Count];
                for(int i = 0; i < dt.Columns.Count; i++)
                {
                    columnNames[0] = dt.Columns[i].ColumnName;
                }
                for(int Rnum = 2; Rnum <= ShtRange.Rows.Count; Rnum++)
                {
                    DataRow dr = dt.NewRow();
                    for(int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++) 
                    {
                        if ((ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2 != null)
                        {
                            dr[Cnum - 1] = (ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value.ToString();
                        }
                    }
                    dt.Rows.Add(dr);
                    dt.AcceptChanges();
                }
                TableInf.DataSource= dt;
                app.Quit();
            }
            app.Quit();
        }
    }
}

 

komentarz 21 lutego 2023 przez areklipno Stary wyjadacz (11,990 p.)
a Excel na komputerze działa poprawnie?
komentarz 21 lutego 2023 przez MarekPrzywarek Nowicjusz (220 p.)
Tak
komentarz 21 lutego 2023 przez areklipno Stary wyjadacz (11,990 p.)
A zainstalowany przez Ciebie Excel jest 32 czy 64 bit? I czy Twój program jest w tej samej architekturze?

Bo taki błąd to jakby Excel nie był zainstalowany albo było coś nie tak z jego uruchomieniem....
komentarz 21 lutego 2023 przez MarekPrzywarek Nowicjusz (220 p.)
Zrozumiałem, będa coś robił.. Dzięki za pomoc!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,312 wizyt
0 głosów
1 odpowiedź 728 wizyt
pytanie zadane 22 stycznia 2018 w C# przez lukaszvip166 Początkujący (300 p.)
0 głosów
2 odpowiedzi 543 wizyt
pytanie zadane 18 grudnia 2016 w C# przez mo290103 Obywatel (1,860 p.)

93,715 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,258 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...