80040154 Classe non enregistrée (Exception de HRESULT

EDIT: Ce programme est d'essayer de lire dans un fichier excel à l'aide de C#, puis ajouter les données à une table dans sql developer.

J'ai couru dans une erreur que je ne peux pas semblent comprendre. Lorsque j'essaie de charger des données excel dans une Boîte de Message que je reçois cette:

Retrieving the COM class factory for component with CLSID {00020819-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Cette erreur apparaît sur:

Microsoft.Office.Interop.Excel.Workbook workbook = new Microsoft.Office.Interop.Excel.Workbook();

J'ai fait des recherches sur cette erreur et nous avons essayé tout ce que j'ai trouvé. J'ai essayé de changer le Platform Target dans les propriétés de x86 comme l'ont dit certains avec décochant Prefer 32-bit et en laissant Platform Target à Any CPU. J'ai pensé que je pourrais être absent une référence importante, mais il a remarqué que j'ai déjà eu l' .NETMicrosoft.Office.Interop.Excel et quand j'ai essayé d'ajouter le COM équivalent, il n'a pas aidé. Pour référence, je suis aide d'une version 32 bits de Windows OS.

Toute aide sur les raisons de cette erreur se produit serait grandement apprécié. Merci.

Voici le code complet de la classe:

namespace ReadExcel
{
public partial class Form1 : Form
{
public Microsoft.Office.Interop.Excel._Application excelApp = new Microsoft.Office.Interop.Excel.Application() { DisplayAlerts = false, Visible = false };
public List<Attorney> listOfAttys = Helpers.getAttorneys();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
setAttyList();
}
private void setAttyList()
{
foreach (var item in listOfAttys.Select(x => x.Caption))
cmbAtty.Items.Add(item);
}
private void btnRun_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Workbook workbook = new Microsoft.Office.Interop.Excel.Workbook();
//Microsoft.Office.Interop.Excel.Style style = new Microsoft.Office.Interop.Excel.Style();
//Microsoft.Office.Interop.Excel.Worksheet worksheet = new Microsoft.Office.Interop.Excel.Worksheet();
try
{
workbook = excelApp.Workbooks.Open(txtbxFilename.Text);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range xlRange = worksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
for(int i=1; i <= rowCount; i++)
{
for(int j=1; j <= colCount; j++)
{
MessageBox.Show(xlRange.Cells[i,j].Value2.ToString());
}
}
if (validateHeader(worksheet))
{
}
}
catch (Exception ex)
{ 
}
excelApp.Quit();
}
private void btnLoad_Click(object sender, EventArgs e)
{
txtbxFilename.Text = null;
System.IO.Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "C:\\";
openFileDialog1.Filter = "Excel files (*.xlsx)|*.xlsx";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
txtbxFilename.Text = openFileDialog1.FileName;
myStream.Close();
myStream.Dispose();
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
private bool validateHeader(Microsoft.Office.Interop.Excel.Worksheet Worksheet)
{
if (Worksheet == null)
return false;
bool isValid = false;
//get header row
//check all cell values
return isValid;
}
//private int getWorkSheetLength(int startPoint, char column, Microsoft.Office.Interop.Excel.Worksheet sheet)
//{
//   int i = startPoint;
//   while (sheet.Range(column + i).Text.ToString().Replace("/r", String.Empty).Replace("/n", String.Empty).Replace(" ", String.Empty) != String.Empty)
//       i++;
//   i--;
//   return i;
//}
}
public class Attorney
{
public string AttorneyID { get; set; }
public int OrganizationID { get; set; }
public string AttorneyName { get; set; }
public string Caption { get; set; }
}
public class LegalTransactionRec
{
public string AccountNumber { get; set; }
public decimal CostAmount { get; set; }
public string SSN { get; set; }
public int BatchID { get; set; }
public Attorney Attorney { get; set; }
public DateTime TransactionDate { get; set; }
public string Description { get; set; }
public int TransactionCode { get; set; }
}
public class ReviewOutput
{
}
public class ApprovedOutput
{ 
}
}
  • Vous avez installé Office?
  • Oui, ce qui se passe au travail, où Bureau et VS ont été installés sur tous les ordinateurs.
InformationsquelleAutor user2405778 | 2014-01-07