[C# & Excel]

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 10-07 14:32
Ik wil een excel werkblad vullen vanuit C#

Ik krijg de data erin, ook makkelijke formules (zoals: A1+(B1*1000)+(C1*60000)+(D1*60*60000) om tijd naar millisec on te rekenen). Tevens kan ik een =SOM(A2:A5 erin krijgen.

Maar zodra ik de formule "AFRONDEN" wil gebruiken krijg ik een exception.
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in System.Dynamic.dll

Additional information: Exception from HRESULT: 0x800A03EC

The error code 0x800A03EC (or -2146827284) means NAME_NOT_FOUND; in other words, you've asked for something, and Excel can't find it.
[Bron: stackoverflow]

code:
1
2
3
4
5
6
7
8
9
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null) { MessageBox.Show("Excel is not properly installed!!"); return; }

Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet worksheet;
object misValue = System.Reflection.Missing.Value;

xlWorkBook = xlApp.Workbooks.Add(misValue);
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);


worksheet.Cells[3, 3].Formula = "=SOM(A2:A5)"; // werkt wel
worksheet.Cells[3, 3].Formula = "=AFRONDEN(SOM(A2:A5);0)"; // werkt dus niet

Heeft iemand enig idee hoe ik het toch voor elkaar krijg?

[ Voor 16% gewijzigd door liquid_ice op 12-03-2016 20:33 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • +1 Henk 'm!

  • Whatson
  • Registratie: Februari 2010
  • Niet online
je hebt een ';' achter som staan, moet een ',' zijn, omdat SOM() nu in de AFRONDEN([getal], [aantal_decimalen]) functie staat.

[ Voor 41% gewijzigd door Whatson op 12-03-2016 20:35 ]


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 10-07 14:32
Aha, Ondanks dat ik een NL excel heb moet ik wel US functies en separators gebruiken.

Bedankt

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 19:06
Je moet wss de separators gebruiken die in je regional settings staan, want daar maakt Office gebruik van

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • _360_
  • Registratie: Januari 2011
  • Laatst online: 15-07 17:11
Je zou ook eens kunnen kijken naar EPPlus:
EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).
Een robustere / makkelijkere manier om met excel vanuit C# te werken.

Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 12-07 13:03

dj_vibri

int(e^x) = f(u)^n

_360_ schreef op maandag 14 maart 2016 @ 12:57:
Je zou ook eens kunnen kijken naar EPPlus:


[...]


Een robustere / makkelijkere manier om met excel vanuit C# te werken.
Hier bij de klant hebben we onlangs een tooltje quick-and-dirty geschreven, voor ons te helpen, dat gebruik maakt van NPOI voor het aanmaken en bewerken van excel files. Kende bovenstaande nog niet, dus alvast thxn voor de tip! *voor de toekomst dan, nu blijft het zoals het werkt :d *

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • Wmm
  • Registratie: Maart 2002
  • Laatst online: 15:17

Wmm

_360_ schreef op maandag 14 maart 2016 @ 12:57:
Je zou ook eens kunnen kijken naar EPPlus:


[...]


Een robustere / makkelijkere manier om met excel vanuit C# te werken.
Niet dat de TS iets heeft aan mijn opmerking (mogelijk iemand anders wel), maar mijn ervaring leert dat EPPlus alleen werkt bij de vrij basic dingen. Als je Excel bestanden complexer worden dan blijkt dat EPPlus toch het nodige niet kan, niet goed doet of erg traag is. Geldt overigens voor al die gratis libraries. Aspose.Cells werkt daarentegen super, maar de prijs is er ook naar.
Pagina: 1