Avatar billede dex_dexter Nybegynder
01. marts 2005 - 13:22 Der er 7 kommentarer og
1 løsning

læse felt fra excel

hej,
jeg har brug for at kunne læse et felt ind fra et excel dokument, altså f.eks F3 ind i en variable, er det muligt på en måde sådan at excel ikke behøver at være installeret på maskinen?

det drejer sig om et konsol program der skal køre en gang i døgnet og importere nogle data fra et excel dokument til en sql database.
Avatar billede nheilbuth Nybegynder
01. marts 2005 - 13:27 #1
Jeg har selv lavet noget ligende ud fra denne artikel:

http://www.c-sharpcorner.com/winforms/ExcelReadMG.asp
Avatar billede dex_dexter Nybegynder
01. marts 2005 - 13:30 #2
starter den ikke excel op?
Avatar billede dex_dexter Nybegynder
01. marts 2005 - 13:33 #3
den klager også over at den ikke kan finde et namespace kaldet excel, mangler jeg nogle libs?
Avatar billede softspot Forsker
01. marts 2005 - 13:42 #4
Prøv evt. med et script noget i stil med dette (du kan nok se idéen og ændre scriptet så det passer til dit specifikke behov):

string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;";strConn += "Data Source=" + Server.MapPath("/excelfile.xls") + ";";strConn += "Extended Properties=Excel 8.0;";
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myCommand = new OleDbCommand("SELECT * FROM [sheet1$]", myConn);
myConn.Open();
OleDbDataReader reader;
reader = myCommand.ExecuteReader();

while(reader.Read())
{
  Response.Write(reader["by"].ToString() + "<BR>");
}

reader.Close();
myConn.Close();
Avatar billede dex_dexter Nybegynder
01. marts 2005 - 13:54 #5
hum, ser ud som noget asp.net?
har du et tip til hvad server.mappath hedder i c#?
Avatar billede nheilbuth Nybegynder
01. marts 2005 - 14:04 #6
Hvis du sætter ExcelObj.Visible til false ser du ikke at den starter excel.

Jeg blev nød til at refere Excel.Application med hele stien, altså:

Microsoft.Office.Interop.Excel.Application

Det virkede ikke umiddelbart at bruge using Microsoft.Office.Interop.Excel.
Har ikke haft tid til at undersøge hvorfor.
Avatar billede softspot Forsker
01. marts 2005 - 15:58 #7
Kan du ikke bare prøve at angive stien absolut (altså undlade server.mappath)...?
Avatar billede dex_dexter Nybegynder
02. marts 2005 - 08:57 #8
koden der er blevet stykket sammen ser ud som følger:

private void button2_Click(object sender, System.EventArgs e)
        {
            string mySelectQuery = "SELECT F6 FROM [sheet1$]";
            string strConn2 = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\xls3.xls;Extended Properties=Excel 8.0;";        //Connection string for a connection to a xls file.
           
            DataSet ExcelDataSet2 = new DataSet();

            OleDbConnection oleConn2 = new OleDbConnection();
            oleConn2.ConnectionString = strConn2;
    OleDbDataReader myReader;
            oleConn2.Open();
    OleDbCommand myCommand = new OleDbCommand(mySelectQuery, oleConn2);
    myReader = myCommand.ExecuteReader();
            while (myReader.Read())
            {
                listBox1.Items.Add(myReader.GetValue(0));
            }

            myReader.Close();
            oleConn2.Close();


        }
    }

problemet er bare at den ikke udlæser tal, dvs hvis der står 1300 i et felt så udlæser den bare "", hvorfor?
hvis der bare er et enkelt bogstav i så virker det fint.
kan man ikke lave en cast i sql sætningen ligesom man kan i t-sql, altså cast(felt as nvarchar) f.eks
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