Aufgabenstellung
Eine Excel Datei, die in einer Firma ständig aktualisiert wird, soll auf Smart Phones (Blackberrys, iPhones, Windows Mobiles, HTCs …) abrufbar sein.
Vorraussetzungen
Vorweg solllte der Artikel „WebDAV mit IIS einrichten“ durchgearbeitet werden, um Zugriff zu bekommen.
Ansatz
Die Datei wird ortstransparent auf einem WebDAV-Laufwerk (siehe Artikel WebDAV einrichten) eines Microsoft IIS Server gespeichert, der nach dem Verfahren von Artikel „WebDAV einrichten“ konfiguriert ist.. Der Microsoft JET Treiber verfügt über die Fähigkeiten, Excel Dateien zu laden (nur XLS, nicht XLSX oder XLSM). Im IIS Server wird eine ASP.NET Anwendung angelegt. Das nachfolgende Beispiel ist so eingerichtet, das es versuchen wird aus dem Web Root der Anwendung eine Datei test.xls zu laden.
Lösung
Anlegen eine ASP.NET Seite:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Unbenannte Seite</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </form> </body> </html>
… mit dem folgenden Code:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string appPath = HttpContext.Current.Request.ApplicationPath; string physicalPath = HttpContext.Current.Request.MapPath(appPath). Replace("\\","\\\\"); string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+physicalPath+"\\test.xls; Extended Properties="+ \"Excel 8.0;HDR=Yes\";"; string CommandText = "select * from [Tabelle1$]"; OleDbConnection myConnection = new OleDbConnection(ConnectionString); OleDbCommand myCommand = new OleDbCommand(CommandText, myConnection); myConnection.Open(); GridView1.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection); GridView1.DataBind(); myConnection.Close(); Label1.Text = physicalPath; } }
Beispiel
Diese Datei kann per WebDAV bearbeitet werden:
http://178.77.69.22/test.xls
und wird on-the-fly in eine HTML-Seite umgewandelt:
http://178.77.69.22/exceltoweb/Default.aspx