Aus Webanwendung die Datenverbindung einer Exceldatei ändern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von ISliceUrPanties.

    Aus Webanwendung die Datenverbindung einer Exceldatei ändern

    Hallo...

    ich habe ein Problem und hoffe, Ihr könnt mir da weiterhelfen...

    Ich habe eine Exceldatei, in welcher eine Pivottabelle irgendwelche Statistiken ausgibt. Inhaltlich kann ich dazu nichts sagen, nicht meine Baustelle.

    Ich möchte aber von meiner Webanwendung aus die Datenverbindung zum SQL-Server, wo die Tabelle ihre Daten herbekommt, ändern.

    Weiß jemand, wo ich da die Datei anpacken muss, um den Befehlstext zur Abfrage dort einzubringen? Wie komme ich da ran?

    Vielen Dank schonmal vorab 8o
    Bilder
    • sql.PNG

      37,35 kB, 787×600, 63 mal angesehen
    Hallo,
    du sagst leider gar nichts über deine Webanwendung. Ist das eine ASP.NET Anwendung? PHP? Ruby, Python? Jede Umgebung hat andere Möglichkeiten.
    Im .NET-Umfeld kannst du z.B. mit Excel-Interop arbeiten (Achtung, funktioniert nicht mit .NET 5).
    Hier mal ein Beispiel als Konsolenanwendung. Du musst eine Referenz zur Microsoft.Office.Interop.Excel hinzufügen.

    C#-Quellcode

    1. using System;
    2. using System.Runtime.InteropServices;
    3. using Excel = Microsoft.Office.Interop.Excel;
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. Excel.Application xlApp = new Excel.Application();
    9. var xlWorkbook = xlApp.Workbooks.Open(@"Pfad\zur\Datei.xlsx");
    10. foreach (Excel.WorkbookConnection connection in xlWorkbook.Connections)
    11. {
    12. Console.WriteLine(connection.OLEDBConnection.Connection);
    13. }
    14. xlWorkbook.Close();
    15. Marshal.ReleaseComObject(xlWorkbook);
    16. xlApp.Quit();
    17. Marshal.ReleaseComObject(xlApp);
    18. Console.ReadLine();
    19. }
    20. }


    Oder alternativ kannst du ggf. mit dem Open-XML-SDK arbeiten.

    petaod schrieb:

    toddel schrieb:

    Weiß jemand, wo ich da die Datei anpacken muss
    Von welcher Datei sprichst du?

    ISliceUrPanties schrieb:

    Ist das eine ASP.NET Anwendung? PHP? Ruby, Python?
    Beschreib mal deine Umgebung


    Ich habe hier eine Excel Statistik Datei (Pivot Tabelle), die sich Daten aus einer SQL Server Sicht holt. Für diese Datei musste bisher jedes Quartal eine Sicht erstellt werden (Datum Between '01.01.xxxx and 31.03.xxx' usw.)... Ziemlich aufwändig... Das trage ich nun manuell in jeder neuen Datei ein... Somit entfällt wenigstens das Sicht erstellen...

    Da ich in der Exceldatei ja auch das Datum im Abfragetext eingeben kann, würde ich gerne in einer VB-Webanwendung ein paar Buttons (Q1, Q3, Q3, Q4, ganzes Jahr und ein Dropdown mit der Jahreszahl) erstellen, wo ich die Exceldatei mit dem gewünschtem Datumsbereich sozusagen vorab anpassen und bereitstellen kann.

    Ich nutze Visual Studio 2019 und es ist wie gesagt eine Visual Basic Webanwendung...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „toddel“ ()

    Das Problem ist halt, dass auf dem Webserver kein Excel installiert ist und wird.

    Hier wäre das Problem mit VBA gelöst: stackoverflow.com/questions/20…-in-microsoft-excel-macro

    Genau das möchte ich in .NET umsetzen. OpenXML, CLosedXML? Ein anderes Nuget Paket zur Hilfe?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „toddel“ ()

    petaod schrieb:

    Du willst also von einer VB.Net-Webanwendung direkt auf einen SQL-Server zugreifen, um den Excel-Schritt zu umgehen.
    Ist dein Problem, dass du nicht weißt, wie du das coden sollst?


    Nein, ich möchte aus einer VB.Net Anwendung die Quelle der Daten in der Exceldatei ändern.

    Und ja, wie ich die Datei in der Webanwendung öffne, den SQL-String in die Exceldatei schreibe, die Daten aktualisiere und die Datei wieder speichern kann. Das wäre perfekt...

    toddel schrieb:

    Für diese Datei musste bisher jedes Quartal eine Sicht

    Schon mal daran gedacht, dafür eine Stored Procedure anzulegen, die ein Start und Enddatum erwartet und damit die Daten aus Excel abzurufen? Dann muss man nicht die Datenquelle, sondern einfach nur das Start- und Enddatum in der Excel-Datei hinterlegen/anpassen.

    Aber zu deiner Frage:
    Wenn kein Excel zur Verfügung steht, musst du halt mal schauen, ob du mit dem Open-XML-SDK aus Posting #2 klar kommst. Oder halt mit einer anderen Excel-Bibliothek - auf die Schnelle habe ich noch das hier gefunden epplussoftware.com/en. Ob die mit den Datenquellen umgehen können, musst du testen.