Met C# twee kolommen in excel vergelijken

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • fezza1976
  • Registratie: November 2016
  • Laatst online: 03-09 12:06
Met behulp van C# wil ik twee kolommen in Excel vergelijken. Is het bijvoorbeeld mogelijk om in cel A1 een waarde te plaatsen en dat dan in cel B1 een waarde staat die altijd aan cell A1 blijft gekoppeld?

Soort Dictionary dus eigenlijk.

Voorbeeld :
tekst cel A1: huis
tekst cel B1: house

tekst cel A2: boom
tekst cel A2: tree

Kun je dan vervolgens een if-statement gebruiken. Even simpel gezegd: if A1 == B1.

Ben benieuwd of iemand mij hier iets over kan vertellen. Albast bedankt!

Alle reacties


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:44
Meerdere manieren om dit te doen :
COM object naar Excel openen (traag en werken met COM objecten vind ik altijd een drama, ALLE objecten die gebruikt zijn dienen correct disposed te worden etc).
Ander alternatief : een andere 3rd party library gebruiken hiervoor (op NuGet staan er voldoende).

Acties:
  • 0 Henk 'm!

  • MKoole
  • Registratie: Mei 2010
  • Laatst online: 14:06
Wat ook een optie is om de excel file eerst naar XML om te zetten. (http://www.excel-easy.com/examples/xml.html)

Vervolgens in C# XML inladen, en je gewenste logica toepassen.

Maar even een stap terug, wat wil je bereiken? Ben je op zoek naar duplicaten in kolom 1?

Acties:
  • 0 Henk 'm!

Verwijderd

Hernoem je .xlsx eens naar .zip, en kijk eens wat daarin staat ;)

Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Ik neem aan dat A2 B2 (tree) moet zijn? Je wilt een soort vertaler maken? Als huis dan is House?

[ Voor 3% gewijzigd door Sandor_Clegane op 02-01-2018 20:43 ]

Less alienation, more cooperation.


Acties:
  • +1 Henk 'm!

  • Muuh87
  • Registratie: Augustus 2015
  • Laatst online: 12:31
Je zou gebruik kunnen maken van ClosedXML. Hier Kan je Excel mee openen, lezen, en eventueel muteren

Acties:
  • +1 Henk 'm!

  • heuveltje
  • Registratie: Februari 2000
  • Laatst online: 16:46

heuveltje

KoelkastFilosoof

Waarom wil je dat in C# doen ?, excel heeft daarvoor VBA ingebouwd :P

Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d


Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Zoals anderen ook al aangeven: Wat is het doel hiervan?
Je kunt dit namelijk zelfs in Excel oplossen door een extra kolom te maken en hierin de vergelijking te doen.

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • jmzeeman
  • Registratie: April 2007
  • Laatst online: 12-09 16:17
Ik snap niet helemaal precies wat je wil. Normaliter lijkt me dit idd iets wat je gewoon in excel met een formule of conditional format regelt. Maar gezien je voorbeeld met twee talen: Ik gebruik het zelf vaak omdat vertaalbureaus (of misschien de hele rits minder technische mensen er tussen in) vaak graag met excel werken. Na het vertalen zet ik dan met C# de tekst in excel om in resources (C files, HEX files, bitmaps, etc.) die ik mee kan linken of los kan flashen.

Ik heb goede ervaringen met EPPlus (open source met LGPL v3 licentie, op codeplex oudere versie beschikbaar onder LGPL v2.1). Gebruik is super simpel:
C#:
1
2
3
4
5
6
7
8
9
10
using (var stream = new FileStream("myexcelfile.xslx", FileMode.Open, FileAccess.Read))
{
    var package = new ExcelPackage();
    package.Load(stream);         
    var sheet = package.Workbook.Worksheets[0];
    if(sheet.Cells["A1"].Value == sheet.Cells["B1"].Value)
    {
        //doe je ding
    }
}

Je kan cellen ook numeriek adresseren dus met
C#:
1
sheet.Cells[0,0].Value
in plaats van
C#:
1
sheet.Cells["A1"].Value


Je kan ook de standaard office interop gebruiken. Dat werkt praktisch hetzelfde maar dan heb je altijd excel nodig en tijdens het debuggen wordt je dan helemaal naar van de excel processen die blijven draaien omdat je de COM-objecten dan vaak niet helemaal netjes afsluit.

Acties:
  • 0 Henk 'm!

  • fezza1976
  • Registratie: November 2016
  • Laatst online: 03-09 12:06
Bedankt voor de reacties!

Ik zal inderdaad even verduidelijken waarom ik dit precies wil. Het gaat inderdaad om een vertaalprogramma. Ik wil een random "Nederlands" woord in een label laten verschijnen en in een textbox dient men dan de vertaling van dat woord te typen. Soort toets dus.

Ik had hiervoor al de Dictionary class gebruikt en dat werkt op zich ook wel, maar om dit vanuit een excel werkblad te doen, leek mij praktischer. Daarnaast wil ik gewoon weten hoe dit moet:)

Acties:
  • +2 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:44
fezza1976 schreef op woensdag 3 januari 2018 @ 10:06:
Bedankt voor de reacties!

Ik zal inderdaad even verduidelijken waarom ik dit precies wil. Het gaat inderdaad om een vertaalprogramma. Ik wil een random "Nederlands" woord in een label laten verschijnen en in een textbox dient men dan de vertaling van dat woord te typen. Soort toets dus.

Ik had hiervoor al de Dictionary class gebruikt en dat werkt op zich ook wel, maar om dit vanuit een excel werkblad te doen, leek mij praktischer. Daarnaast wil ik gewoon weten hoe dit moet:)
Ipv Excel kun je in zo'n geval beter werken met CSV, JSON of XML (makkelijker om mee te werken).

Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Voor een programmeur, voor een update aan een lijst snap ik het wel dat Excel handig is. Misschien een onderhoudsknop dat je een nieuwe woord en vertaling toe kan voegen? Dan is de opslagmethode niet zo van belang.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:20

Creepy

Tactical Espionage Splatterer

Maar ik mis wel een beetje wat je nu zelf al hebt geprobeerd. In eerste instantie moet je toch echt zelf aan de slag. Dus wat heb je al geprobeerd en tegen welke problemen loop je dan aan?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Tweezitsbank
  • Registratie: December 2016
  • Niet online

Tweezitsbank

Relax...

Sandor_Clegane schreef op woensdag 3 januari 2018 @ 11:58:
Voor een programmeur, voor een update aan een lijst snap ik het wel dat Excel handig is. Misschien een onderhoudsknop dat je een nieuwe woord en vertaling toe kan voegen? Dan is de opslagmethode niet zo van belang.
Veel mensen hebben weliswaar Excel op hun pc staan maar zeker niet allemaal. Tevens wordt het al lastiger als de applicatie op een server geplaatst wordt; systeembeheeerders zullen niet staan te springen om Excel op een server te plaatsen laat staan dat daar licenties voor zijn. Performance kan ook nog een ding zijn.

Dit valt wellicht buiten de scope van de vraag maar ik zou ook een ander formaat kiezen, ik denk csv.

Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Tweezitsbank schreef op woensdag 3 januari 2018 @ 20:02:
[...]


Veel mensen hebben weliswaar Excel op hun pc staan maar zeker niet allemaal. Tevens wordt het al lastiger als de applicatie op een server geplaatst wordt; systeembeheeerders zullen niet staan te springen om Excel op een server te plaatsen laat staan dat daar licenties voor zijn. Performance kan ook nog een ding zijn.

Dit valt wellicht buiten de scope van de vraag maar ik zou ook een ander formaat kiezen, ik denk csv.
Vandaar de opmerking voor een onderhoudsknop.

Less alienation, more cooperation.

Pagina: 1