20. januar 2009 - 15:03Der er
10 kommentarer og 1 løsning
Læsning af Excel ark fra C#
Hej.
Jeg har lavet et program der kan læse et excel ark og konvertere det til en semikolon separeret fil. Ark1 som jeg læser hedder i dette tilfælde arkiv, til dette bruger jeg kommandoerne
odbcCon = new System.Data.Odbc.OdbcConnection("providerName=System.Data.Odbc ; DSN=ExcelCon; ");
odbcread = new System.Data.Odbc.OdbcDataAdapter("select * from [Arkiv$]", odbcCon);
Hvis man nu ikke kender navnet på det ark man skal læse eller navnet kan være forskelligt fra gang til gang, er der så en måde hvorpå man kan læse det første ark, eller spørge på hvad det hedder ?
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Jeg ved ikke om der er en nem måde at gøre det på, ved at bruge Odbc. Men jeg kan fortælle dig, hvordan du gør det med OleDb.
OleDbConnection.GetOleDbSchemaTable() metoden, returnerer en DataTable instans, med information om alle tabeller (også kaldet Ark i Excel). For at teste det, puttede jeg en DataGridView ind på en form, og skrev følgende kode:
DataTable schemaTable = null;
using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\excelFil.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";")) { con.Open(); schemaTable = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); }
Jeg vil ikke skrive om til oleDB, da jeg har testet med det for lang tid siden og bestemte at odbc var vejen frem, det er et ældre program jeg er ved at rette i, men prøver lige at se om jeg kan bruge noget ligende til ODBC, høre også gerne hvis andre har forslag til odbc
Jah okay, men vil alligevel poste en evt. løsning, ved at benytte Microsoft.Office.Interop.Excel, så kan scarface335 skifte til det, hvis han lyster. Det er faktisk rigtig godt. Jeg har selv prøvet et kommunikere med excel via en DB connection, og det synes jeg var lidt træls.
Her er min løsning på at løbe ark igennem:
foreach(Worksheet sheet in sheets) { if (sheet.Name.Equals(arkNavn)) { Worksheet mySheet = (Worksheet)sheets.get_Item(arkNavn); } }
Inden foreach skal der selvfølgelig være noget initalisering og åbning af en excel fil.
jeg fandt aldrig nogen programerings mæssig løsning, i stedet blev løsningen at arknavn altid var der samme, lukkede sprøgsmålet, fordi der ikke var kommet nogle svar eller kommentarer i over et år.
Synes godt om
Ny brugerNybegynder
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.