Om het mezelf in de toekomst wat gemakkelijker te maken, heb ik 3 klassen geschreven om waardes van een excel document op te vragen of - en daar zit de fout - om waardes in te vullen.
Ik heb een test-programma gemaakt om deze klassen te testen. Het opvragen gaat goed, maar als ik het aanpas wordt de waarde wel lokaal ingevuld (denk ik toch), maar als ik later de excel open zijn er geen wijzigingen aangebracht.
Omdat de code nogal verdeeld is heb ik het op plaatscode gezet:
Klassen: Plaatscode: 141265
TestProgramma: Plaatscode: 141266
Weet iemand wat er precies fout loopt, want volgens google moet je via Value2 of Value wel degelijk een waarde in een cel kunnen stoppen.
Lolll
EDIT:
Structuur van excel(testbestand.xlsx) vergeten:
//A//B//...
1.naam//email
2.eenNaam//eenEmail
......//.....
Ok, ik heb nu een destructor toegevoegd die de worksheet opslaat en de applicatie sluit. Als ik het programma nu afsluit vraagt hij of ik het bestaande bestand wil vervangen, dan klik ik op ok. Maar als ik het excel-bestand bekijk is er niets gewijzigd. Wat doe ik nog fout?
Ok, ik heb nu een destructor toegevoegd die de worksheet opslaat en de applicatie sluit. Als ik het programma nu afsluit vraagt hij of ik het bestaande bestand wil vervangen, dan klik ik op ok. Maar als ik het excel-bestand bekijk is er niets gewijzigd. Wat doe ik nog fout?
Destructor:
[..code..]
Lolll
Weet niet zeker of het nodig is, maar misschien moet je handmatig schrijfrechten defineren voor je programma.
Hoe zou ik dat dan moeten doen? Ietsje meer uitleg graag
normaal gesproken zou het combineren je scripts in twee delen het moeten oplossen,
Het deel dat schrijf doe je in het bestand van je project Program.cs (console basis) (weet niet of deze hetzelfde is genoemd in elke programmeertaal, en de uitvoer en andere functies zet je gewoon in je eigen class.
programmeren van het 'write' gedeelte voor je programma zou automatisch in Program.cs moeten worden geregeld.
Daarnaast moet je na het schrijven niet het process killen, maar het bestand opslaan, en dan eventueel process stoppen naar de wensen.
normaal gesproken zou het combineren je scripts in twee delen het moeten oplossen,
Het deel dat schrijf doe je in het bestand van je project Program.cs (console basis) (weet niet of deze hetzelfde is genoemd in elke programmeertaal, en de uitvoer en andere functies zet je gewoon in je eigen class.
programmeren van het 'write' gedeelte voor je programma zou automatisch in Program.cs moeten worden geregeld.
Maar ik heb speciaal een klasse gemaakt die ervoor zorgt dat ik gemakkelijk excel-bestanden kan lezen en schrijven. Dus waarom zou ik die code moeten opsplitsen als ik de functionaliteit ervan met 1 klasse ook kan bereiken?
Citaat:
Daarnaast moet je na het schrijven niet het process killen, maar het bestand opslaan, en dan eventueel process stoppen naar de wensen.
Ok, dan kan ik een functie save en een functie quit toevoegen, maar het probleem blijft hetzelfde: Het lukt mij niet om dat excel-bestand op te slaan.
Als je een download applicatie maakt, bijv. een updater of Origin (EA Downloader).
Als je de gehele applicatie bouwt in een enkele class buiten de Program.cs zal het programma het bestand wel downloaden, maar vervolgens niet wegschrijven op de hardeschijf, dit omdat er geen rechten zijn toegekent en dit levert dus een foutmelding.
Dit is een enkele reden waarom het handiger is om het schrijf/download gedeelte te programmeren in Program.cs, doordat Program.cs op command niveau is heeft het dus ook schrijfrechten.
Ik begrijp wat je bedoelt, maar dan heeft het toch geen nut om een klasse te maken als ik die schrijfcode dan telkens in het programma zelf moet zetten.
ja maar dan heeft die klasse toch geen nut, aangezien ik dan dezelfde code (om te schrijven) in elk afzonderlijk programma waarin ik die functionaliteit nodig heb terug moet schrijven.
Ik zou dus een oplossing nodig moeten hebben waarin ik kan schrijven in mijn klasse, anders kan ik er beter mee stoppen.
ligt eraan hoe je het bekijkt, het is voor een deel OOP.. Je kunt zeer gemakkelijk een methode / functie met bepaalde input variabelen maken in program.cs en deze oproepen via je eige klasse
In totaal kreeg ik er 14, maar dan bleek er iets mis te zijn met de assembly, dus die heb ik de reference naar Excel (Microsoft.Office.Interop.Excel) eerst verwijderd en dan terug toegevoegd, en toen waren alle errors weg. Maar als ik rebuild krijg ik er terug 2, en daar kan ik niet echt iets uit af leiden:
Citaat:
Error 1 Member 'ExcelManager.ExcelManager.getCells()' from assembly 'c:...ExcelManagerbinReleaseExcelManager.dll' cannot be used across assembly boundaries because it contains a type which has a generic type parameter that is an embedded interop type. C:...ExcelManagerTesterProgram.cs 14 25 ExcelManagerTester
Error 2 Member 'ExcelManager.ExcelManager.getCells()' from assembly 'c:...ExcelManagerbinReleaseExcelManager.dll' cannot be used across assembly boundaries because it contains a type which has a generic type parameter that is an embedded interop type. C:...ExcelManagerTesterProgram.cs 15 26 ExcelManagerTester
Het heeft dus iets te maken met getCells(), maar ik weet niet wat.