Avatar billede chrhoegh Nybegynder
10. november 2006 - 12:05 Der er 5 kommentarer

Hvordan udgås det at 1. række i et Excel ark angiver feltoplysn.?

Jeg er lidt ny i c#, og har defor brug for lidt hjækp.

Hvordan udgås det at 1. række i et Excel ark angiver feltoplysningerne.

Det ville være perfekt hvis man bare kunne bruge Excel's egne kollonne-overskrifter A B C osv.


Jeg bruger følgende kode til at indlæse mit Excel ark.
-------------------------------------------
String sConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\temp.xls;" +
"Extended Properties=Excel 8.0;";

OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Ark1$]", objConn);

OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;

DataSet ds = new DataSet();
objAdapter1.Fill(ds);
-------------------------------------------
Avatar billede sovsekoder Nybegynder
10. november 2006 - 20:02 #1
følgende kode henter kolonne "A" i række 0 i table 0 (første række i dit returnerede data):
int table = 0;
int row = 0;
DataTable dt = ds.Tables[table];
double d = (double)(dt.Rows[row]["A"]);
Avatar billede sovsekoder Nybegynder
10. november 2006 - 20:02 #2
ahhh du mener du faktisk vil bruge "A" eller ?
Avatar billede sovsekoder Nybegynder
10. november 2006 - 20:18 #3
f.eks:
int row = 1;
string coloumn = "BW";
double d = (double)GetField(ds, row, coloumn);

hvor du har følgende "hjælpe"-metode:
private object GetField(DataSet ds, int row, string coloumnName)
{
    int table = 0;
    row--;
    DataTable dt = ds.Tables[table];
    coloumnName = coloumnName.ToUpper();
    int length = coloumnName.Length;
    int coloumn = 0;
    int baseNumber = (int)'Z' - (int)'A'+1;
    for (int i = 0; i < length; i++)
    {
        coloumn = coloumn*baseNumber+((int)coloumnName[i] - 'A'+1);
    }


    return dt.Rows[row][coloumnName];
}
Avatar billede chrhoegh Nybegynder
10. november 2006 - 21:04 #4
Tak for dit svar, jeg har kigget lidt på det, men er nok lidt for ny i C# til lige at kunne se det for mig..

Jeg har et Excel ark med "3" navne i kolonne A / Ark1

Jens
Peter
Hans

Når jeg bruger
("SELECT * FROM [Ark1$]", objConn);
Bliver "Jens" mit feltnavn og kun "Peter og "Hans" ender som værdier jeg kan arbejde med.

Det eneste jeg egentlig ønsker er en funktion der kan se om et navn findes på listen, hvor jeg selvfølgelig også ønsker at kunne finde "Jens" selvom han står i første række.
Sagt med andre ord, jeg kan altså ikke finde "Jens" i mit Excel Ark med den kode jeg har angivet øverst.
Avatar billede chrhoegh Nybegynder
10. november 2006 - 21:59 #5
Fandt efter lang tids søgen denne løsning:

Følgende string ændres til:
string sConnectionString =
@"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source=C:\temp.xls;" +
@"Extended Properties="+'"'+"Excel 8.0;HDR=NO"+'"';

HDR=NO - betyder header = no
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester