Avatar billede koppelgaard Praktikant
20. juli 2009 - 13:07 Der er 9 kommentarer og
1 løsning

Engelsk Excel 2007 og C# 2008 ("Old format or invalid type library")

Jeg har fået Excel 2007 engelsk udgave.
Når jeg forsøger at køre kode, der  automatiserer Excel fra  C# for jeg en fejl:
"Old format or invalid type library"

Den kode jeg forsøger at køre findes på siden:
http://support.microsoft.com/kb/302084

På siden :
http://support.microsoft.com/kb/320369
foreslås bl.a. :

"Kør Excel-metoden eller -egenskaben ved hjælp af InvokeMember, så du kan angive CultureInfo for kaldet. Følgende kode illustrerer f.eks., hvordan du kan aktivere metoden Tilføj under objektet Projektmapper ved at angive "en-US" under CultureInfo:

Dim oApp As New Excel.Application()
oApp.Visible = True
oApp.UserControl = True
Dim oBooks As Object = oApp.Workbooks
Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)

"

Jeg er er desværre ikke Visual Basic mand og vil gerne have koden skrevet i C#.

Kan nogen hjælpe med det ?

Michael
Avatar billede bvli Praktikant
20. juli 2009 - 13:37 #1
Excel.Application oApp = new Excel.Application();
    oApp.Visible = true;
    oApp.UserControl = true;
    object oBooks = oApp.Workbooks;
    System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
    oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, null, oBooks, null, ci);

.. og du kan selv konvertere her:
http://www.developerfusion.com/tools/convert/vb-to-csharp/
Avatar billede koppelgaard Praktikant
20. juli 2009 - 14:44 #2
Vild god side - viste ikke det fandtes.
Prøver lige koden :-)
Avatar billede koppelgaard Praktikant
20. juli 2009 - 15:22 #3
Det er glimrende med den oversættelses side, som du har sendt!
Den virker langt hen af vejen.

Men jeg kan ikke få løsningen til at virke i koden
http://support.microsoft.com/kb/302084

ghrr og øv.

Kan du hjælpe ?
Avatar billede bvli Praktikant
20. juli 2009 - 15:31 #4
Smider den stadig den samme exception?
Avatar billede koppelgaard Praktikant
20. juli 2009 - 18:09 #5
Den kommer lidt længere.
Excel bliver åbnet men når linien
oSheet.Cells[1, 1] = "First Name";
skal afviklet kommer den samme fejl
Avatar billede bvli Praktikant
21. juli 2009 - 09:07 #6
Hej igen.

Okay. Prøv at sætte din current threads locale til en-us.

Altså inden du overhovedet begynder at lege med Excel-objektet, så:

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

Husk at smide værdien tilbage til det den var før, når du er færdig med at manipulere objektet.
Avatar billede koppelgaard Praktikant
21. juli 2009 - 12:57 #7
Så var den der!
Så simpelt! Jeg tilføjede bare linien øverst og bingo!
Jeg undre mig over at 3 de metoder, der er beskrevet er langt mere omstændelige.

Men hvordan sætter jeg den tilbage.
Jeg ved faktisk ikke helt, hvad jeg har.

Er der en metode til at aflæse dette?

Michael
Avatar billede bvli Praktikant
21. juli 2009 - 13:04 #8
CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
try {
  //leg med excel
} finally {
  Thread.CurrentThread.CurrentCulture = oldCulture;
}

--
Herligt du fik det til at virke! :)
Avatar billede koppelgaard Praktikant
21. juli 2009 - 19:47 #9
fint tak. Sender du et svar og hjælpe mig med mit næste spørgsmål om

using AxMicrosoft.Office.Interop;
using AxMicrosoft.Office.Interop.Owc11;

Michael
Avatar billede bvli Praktikant
21. juli 2009 - 21:53 #10
Kommer her :)

Kigger på dit andet spørgsmål - men nok først i morgen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester