Jag vill i runtime exportera data från ett ark i Excel till en DataTable (Vill inte installera Excel på servern). Jag har på nätet stött på diverse lösningar där man använder sig av OleDb. har du sett till att ASPNET konto på din webserver har rättigheter till den katalog som excel filen ligger i ? ..och vad är det som inte fungerar? Får du något fel? Isf vilket? Det smäller så snart jag försöker öppna min connection. Ska det inte vara fnuttar kring Extended properties? http://www.connectionstrings.com/ Tack för hjälpen! Jag har tidigare använt den varianten du kör nu, dvs. via OLEDB, men har gått över till att läsa XML Spreadsheets istället. Helt underbart att kunna läsa och skriva Excel-filer i form av XML. Har du kollat vad variabeln sConnectionString verkligen innehåller? Är sökvägen till excelfilen korrekt? Jag kör inte dotnet, men med vbscript och vanlig gammal ASP fungerar denna connectionstring: Tack för alla svar! Tack för alla svar! Jag förstår dit resonemang om användarnas ansvar till fullo! och självklart ska det gå att läsa från en Excelfil...Läsa Excel från en webbapplikation
Har testat att skapa en windowsapplikation som gör detta och det fungerar utmärkt, men jag har inte lyckats göra en webbapplikation som gör motsvarande. Antagligen har det att göra med någon typ av rättighetsproblem.
Är det någon som har en lösning på problemet?
Exempel på kod:
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" +Server.MapPath("test.xls") +";" +
"Extended Properties=\"Excel 8.0;\"";
// Create connection object by using the preceding connection string.
OleDbConnection objConn = new OleDbConnection(sConnectionString);
// Open connection with the database.
//Här smäller det (Exception Details: System.Data.OleDb.OleDbException: Unspecified error)
objConn.Open();
OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
// Create new OleDbDataAdapter that is used to build a DataSet
// based on the preceding SQL SELECT statement.
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
// Pass the Select command to the adapter.
objAdapter1.SelectCommand = objCmdSelect;
// Create new DataSet to hold information from the worksheet.
DataSet objDataset1 = new DataSet();
// Fill the DataSet with the information from the worksheet.
objAdapter1.Fill(objDataset1, "XLData");
// Clean up objects.
objConn.Close();
Sv: Läsa Excel från en webbapplikation
Sv: Läsa Excel från en webbapplikation
Sv: Läsa Excel från en webbapplikation
Exception Details: System.Data.OleDb.OleDbException: Unspecified error. Sv: Läsa Excel från en webbapplikation
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" +Server.MapPath("test.xls") +";" +
"Extended Properties=\"Excel 8.0;\"";
Sen i ditt select statement verkar du ha skrivit ihop From och tabellnamnet (vill bara göra dig uppmärksam på det)
Sv: Läsa Excel från en webbapplikation
Det verkar som om det fungerar utan ”fnuttar”, för jag testade detta innan i en windowsapplikation och körde sedan den gamla hederliga copy paste metoden in i ett webbprojekt.
För säkerhetsskull har jag nu testat att lägga till ”fnuttarna”, men det löser tyvärr inte problemet. :(
(Har uppdaterat exemplet med den nya koden om någon undrar)Sv: Läsa Excel från en webbapplikation
Det finns bara en nackdel och det är att användaren, vanligtvis administratörer i mitt fall, måste komma ihåg att spara sin fil som Excel XML Spreadsheet.
// JohanSv: Läsa Excel från en webbapplikation
<code>
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\Bok1.xls;Extended Properties=Excel 8.0;
</code>Sv: Läsa Excel från en webbapplikation
Problemet är i mitt fall att jag inte vill besvära användaren med att ”spara som” eller ”exportera till”, det är där själva problematiken ligger. Detta är källan till alla problem, för användaren tycker att detta moment är fantasiskt svårt.
Jag har kontrollerat att sökvägen är rätt, och jag har som sagt testat det i en windowsapplikation tidigare och då fungerar det.Sv: Läsa Excel från en webbapplikation
Problemet är i mitt fall att jag inte vill besvära användaren med att ”spara som” eller ”exportera till”, det är där själva problematiken ligger. Detta är källan till alla problem, för användaren tycker att detta moment är fantasiskt svårt.
Jag har kontrollerat att sökvägen är rätt, och jag har som sagt testat det i en windowsapplikation tidigare och då fungerar det.Sv: Läsa Excel från en webbapplikation
Jag kan inte se något som helst fel på din connectionstring eller kod i övrigt, kan det vara ett rättighetsproblem? Använder du impersonation? Har du isåfall sett den här artikeln:
http://support.microsoft.com/default.aspx?scid=kb;en-us;827190&Product=aspnet