Vanuit Java wil ik het e.e.a wijzigen aan Excel files. Daarvoor heb ik een commandline utility geschreven in .net. Deze is compiled in een executable.
Deze executable wordt opgestart vanuit java via Process ps = rt.exec(execute);
Bij het executen wordt de .net aangeroepen met:
D:\Apps\CCM\ExcelPivotGenerator.exe" newTemplate "SAP_ParameterHistory_270" "D:\Apps\CCM" "D:\Apps\CCM\output"
Als ik dit commando uitvoer via een de commandline in windows dan werkt alles. Echter, via de rt.exec krijg ik een error melding:
Error: Oude indeling of ongeldig type DLL-bestand. (Uitzondering van HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
Excel is installed op de machine waarop het draait (engelse versie). De regional settings staan ook op engels. Googlen leverde niets op anders dan het toevoegen van een expliciete regel in .net die de culture instelt:
maar dit lost het probleem niet op.
Deze executable wordt opgestart vanuit java via Process ps = rt.exec(execute);
Bij het executen wordt de .net aangeroepen met:
D:\Apps\CCM\ExcelPivotGenerator.exe" newTemplate "SAP_ParameterHistory_270" "D:\Apps\CCM" "D:\Apps\CCM\output"
Als ik dit commando uitvoer via een de commandline in windows dan werkt alles. Echter, via de rt.exec krijg ik een error melding:
Error: Oude indeling of ongeldig type DLL-bestand. (Uitzondering van HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
Excel is installed op de machine waarop het draait (engelse versie). De regional settings staan ook op engels. Googlen leverde niets op anders dan het toevoegen van een expliciete regel in .net die de culture instelt:
code:
1
2
3
4
5
6
| Dim oldCI As System.Globalization.CultureInfo = _ System.Threading.Thread.CurrentThread.CurrentCulture System.Threading.Thread.CurrentThread.CurrentCulture = _ New System.Globalization.CultureInfo("en-US") exbook = app.Workbooks.Open(source) System.Threading.Thread.CurrentThread.CurrentCulture = oldCI |
maar dit lost het probleem niet op.