Przejdź do treści stopki
KORZYSTANIE Z IRONXL

Jak pisać do pliku Excel w VB.NET (Prosty sposób)

Korzystanie z Office Interop było tradycyjnie domyślnym rozwiązaniem do automatyzacji zadań w programie Microsoft Excel, ale wiąże się to z poważnymi wadami — problemami z wydajnością, komplikacjami po stronie serwera oraz wymogiem zainstalowania programu Microsoft Excel na komputerze.

Ten przewodnik pokazuje nowoczesne, bardziej wydajne podejście do tworzenia i zapisywania plików Excel w VB.NET. Będziemy korzystać z IronXL for .NET, biblioteki stworzonej specjalnie po to, by pomóc programistom w tworzeniu, odczytywaniu i edytowaniu arkuszy kalkulacyjnych Excel bez konieczności korzystania z Office Interop. Zobaczysz, jak za pomocą zaledwie kilku wierszy intuicyjnego kodu wykonywać typowe zadania, takie jak tworzenie nowych plików, zapisywanie danych z kolekcji oraz modyfikowanie istniejących dokumentów.

Jak rozpocząć automatyzację programu Excel w VB.NET?

Aby rozpocząć zapisywanie do plików Excel w projekcie VB.NET, należy najpierw dodać bibliotekę IronXL. Proces jest prosty i można go przeprowadzić bezpośrednio w programie Visual Studio.

Najpierw upewnij się, że Twoje środowisko programistyczne jest gotowe:

  • Visual Studio 2022 lub nowsze.
  • Aktywny projekt oparty na platformie .NET Framework 4.6.2 lub nowszej albo .NET Core/.NET 5+. IronXL jest kompatybilny ze wszystkimi nowoczesnymi wersjami .NET, aż do wersji .NET 9 i 10 włącznie.

Następnie zainstaluj pakiet IronXL NuGet:

  1. Otwórz menedżera pakietów NuGet w programie Visual Studio.
  2. Wyszukaj pakiet IronXl.Excel.
  3. Kliknij "Zainstaluj".

Alternatywnie można zainstalować go za pomocą konsoli menedżera pakietów, używając następującego polecenia:

Install-Package IronXl.Excel

Przejdź do menedżera pakietów NuGet Przejdź do meniu NuGet Package Manager w Visual Studio, aby znaleźć odpowiedni pakiet do integracji VB.NET z Excelem.

Po zainstalowaniu możesz zacząć pisać kod. Wystarczy dodać Imports IronXL na początku pliku VB.NET, aby wprowadzić klasy biblioteki do zakresu.

Wyszukiwanie pakietu IronXL w interfejsie użytkownika menedżera pakietów NuGet Wyszukiwanie pakietu IronXL w celu zainstalowania biblioteki potrzebnej do zapisywania danych w pliku Excel przy użyciu VB.NET.

Jak utworzyć nowy plik Excel i zapisać w nim dane?

Tworzenie nowego pliku Excel od podstaw to podstawowe zadanie. Dzięki IronXL można generować skoroszyty, dodawać arkusze i wypełniać komórki danymi z dowolnego źródła, takiego jak zbiór obiektów. Jest to idealne rozwiązanie do zadań takich jak eksportowanie danych aplikacji lub generowanie codziennych raportów.

Spójrzmy na praktyczny przykład. Wyobraźmy sobie, że mamy listę danych produktów, którą chcemy wyeksportować do arkusza kalkulacyjnego Excel.

Zapisz zbiór danych do nowego arkusza programu Excel

Poniższy kod pokazuje, jak pobrać List(Of Product) i zapisać jego zawartość w nowo utworzonym pliku Excel.

Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

Public Class Product
    Public Property ID As Integer
    Public Property Name As String
    Public Property Price As Decimal
End Class

Module Program
    Sub Main(args As String())
        ' 1. Prepare a list of data to write to Excel.
        Dim products As New List(Of Product) From {
            New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
            New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
            New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
        }

        ' 2. Create a new Excel workbook and select the default worksheet.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 3. Write headers for our data.
        sheet("A1").Value = "Product ID"
        sheet("B1").Value = "Product Name"
        sheet("C1").Value = "Price"

        ' Style the header row.
        Dim headerRange = sheet.GetRange("A1:C1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray

        ' 4. Iterate through the product list and write data to subsequent rows.
        For i As Integer = 0 To products.Count - 1
            Dim product = products(i)
            Dim row = i + 2 ' Start from the second row
            sheet("A" & row).Value = product.ID
            sheet("B" & row).Value = product.Name
            sheet("C" & row).Value = product.Price
        Next

        ' 5. Apply currency formatting to the price column.
        Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
        priceColumn.Style.Format = "$#,##0.00"

        ' 6. Auto-size columns for better readability.
        sheet.Columns.AutoFit()

        ' 7. Save the newly created and populated workbook to a file.
        workbook.SaveAs("ProductReport.xlsx")

    End Sub
End Module

Jak to działa

Ten przykład kodu pokazuje prostotę i możliwości interfejsu API IronXL w zakresie automatyzacji wprowadzania danych do programu Excel.

  1. Przygotowanie danych: Zaczynamy od prostej klasy Product oraz List(Of Product), która reprezentuje dane, które chcemy wyeksportować. Symuluje to pobieranie danych z bazy danych lub innej warstwy logiki biznesowej.
  2. Tworzenie skoroszytów i arkuszy: WorkBook.Create() generuje nowy, pusty skoroszyt Excel w pamięci. Każdy nowy skoroszyt automatycznie zawiera jeden arkusz, do którego możemy uzyskać dostęp za pośrednictwem właściwości DefaultWorkSheet. W przypadku bardziej złożonych dokumentów można dodać więcej arkuszy, korzystając z metody CreateWorkSheet.
  3. Zapisywanie danych: Dostęp do komórek uzyskujemy za pomocą znanego zapisu w stylu A1 (np. sheet("A1")). Właściwość .Value służy zarówno do ustawiania, jak i pobierania zawartości komórki. IronXL automatycznie obsługuje konwersje typów danych dla liczb, ciągów znaków i dat.
  4. Stylizacja i formatowanie: IronXL zapewnia kompleksowy interfejs API do stylizacji. W przykładzie zaznaczamy Range komórek i stosujemy pogrubienie oraz kolor tła do naszego nagłówka. Stosujemy również format waluty w kolumnie cenowej przy użyciu właściwości Style.Format, która jest niezbędna do tworzenia profesjonalnych raportów. Aby uzyskać więcej opcji stylizacji, zapoznaj się z dokumentacją API obiektu Style.
  5. Zapisywanie pliku: Na koniec workbook.SaveAs("ProductReport.xlsx") zapisuje skoroszyt znajdujący się w pamięci do systemu plików. IronXL obsługuje różne formaty, w tym .xlsx, .xls, .csv i .tsv, co zapewnia elastyczność w eksportowaniu danych.

Jak zapisać dane do istniejącego pliku Excel?

Często nie trzeba tworzyć nowego pliku, a jedynie dodać dane do już istniejącego. Jest to typowe dla rejestrowania, dołączania rekordów do zbioru danych lub aktualizowania raportu. Dzięki IronXL proces ten jest tak samo łatwy, jak utworzenie nowego pliku.

Poniższy przykład pokazuje, jak otworzyć istniejący arkusz kalkulacyjny, znaleźć ostatnio używany wiersz i dołączyć do niego nowe dane.

Imports IronXL
Imports System.Collections.Generic
Imports System.Linq

' (Assuming the Product class from the previous example is available)

Module Program
    Sub Main(args As String())
        ' Ensure the file from our previous example exists.
        If Not System.IO.File.Exists("ProductReport.xlsx") Then
            Console.WriteLine("Please run the first example to create ProductReport.xlsx")
            Return
        End If

        ' 1. Load the existing workbook from the file system.
        Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
        Dim sheet As WorkSheet = workbook.DefaultWorkSheet

        ' 2. Find the first empty row to append new data.
        ' The LastRowUsed property gives us the last row with data.
        Dim lastRow = sheet.Info.LastRowUsed
        Dim newRowIndex = lastRow.RowNumber + 1

        ' 3. Define the new data to be added.
        Dim newProducts As New List(Of Product) From {
            New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
            New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
        }

        ' 4. Loop through the new data and write it to the worksheet.
        For i As Integer = 0 To newProducts.Count - 1
            Dim product = newProducts(i)
            Dim currentRow = newRowIndex + i
            sheet("A" & currentRow).Value = product.ID
            sheet("B" & currentRow).Value = product.Name
            sheet("C" & currentRow).Value = product.Price
        Next

        ' 5. Re-apply formatting and auto-fit columns to include new data.
        Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
        priceColumn.Style.Format = "$#,##0.00"
        sheet.Columns.AutoFit()

        ' 6. Save the changes back to the original file.
        workbook.Save()

        ' Or save as a new file to preserve the original.
        ' workbook.SaveAs("ProductReport_Updated.xlsx")
    End Sub
End Module

Bardziej szczegółowe wyjaśnienie

Modyfikacja istniejącego pliku przebiega zgodnie z logicznym schematem: wczytaj-edytuj-zapisz.

  1. Ładowanie skoroszytu: Zamiast WorkBook.Create() używamy WorkBook.Load("ProductReport.xlsx"). Powoduje to otwarcie określonego pliku i przeanalizowanie jego zawartości do obiektu WorkBook, gotowego do przetwarzania.
  2. Znalezienie punktu wstawienia: Kluczowym wyzwaniem przy dołączaniu danych jest znalezienie miejsca, od którego należy zacząć pisać. IronXL upraszcza to dzięki właściwości sheet.Info.LastRowUsed, która zwraca ostatni obiekt Row zawierający dane. Po prostu pobieramy numer wiersza i dodajemy do niego jeden, aby znaleźć pierwszy pusty wiersz.
  3. Dodawanie danych: Proces zapisywania nowych danych jest identyczny jak w poprzednim przykładzie. Przechodzimy przez naszą nową listę Product i wypełniamy komórki w nowo zidentyfikowanych pustych wierszach.
  4. Zapisywanie zmian: Metoda workbook.Save() nadpisuje oryginalny plik zmodyfikowanym skoroszytem z pamięci. Jeśli chcesz zachować oryginał, po prostu użyj SaveAs() z nową nazwą pliku, tak jak pokazano w wierszu z komentarzem.

Jak wpisać DataTable do arkusza kalkulacyjnego Excel?

Dla programistów pracujących z danymi ze źródeł takich jak SQL Server typowym zadaniem jest zapisanie zawartości DataTable bezpośrednio do arkusza Excel. IronXL usprawnia ten proces dzięki wbudowanej metodzie, eliminując konieczność ręcznego przechodzenia przez wiersze i kolumny.

Ten przykład pokazuje, jak wypełnić DataTable i wyeksportować go do nowego pliku Excel w jednym kroku.

Imports IronXL
Imports System.Data

Module Program
    Sub Main(args As String())
        ' 1. Create and populate a DataTable. This often comes from a database query.
        Dim dt As New DataTable("EmployeeData")
        dt.Columns.Add("EmployeeID", GetType(Integer))
        dt.Columns.Add("FullName", GetType(String))
        dt.Columns.Add("Department", GetType(String))
        dt.Columns.Add("HireDate", GetType(Date))

        dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
        dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
        dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))

        ' 2. Create a new workbook.
        Dim workbook As WorkBook = WorkBook.Create()
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")

        ' 3. Write the DataTable to the worksheet starting at cell A1.
        ' The second parameter (True) indicates that column headers should be included.
        sheet.Write(dt, "A1", True)

        ' 4. Apply some styling for a more polished look.
        sheet.Columns.AutoFit()
        Dim headerRange = sheet.GetRange("A1:D1")
        headerRange.Style.Font.Bold = True
        headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue

        Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
        dateColumn.Style.Format = "yyyy-mm-dd"

        ' 5. Save the workbook.
        workbook.SaveAs("EmployeeDatabaseExport.xlsx")
    End Sub
End Module

Metoda sheet.Write() jest niezwykle skuteczna w tym celu. Inteligentnie mapuje strukturę DataTable na arkusz, w tym nagłówki kolumn, jeśli zostały określone. Jest to potężna funkcja dla każdej aplikacji opartej na danych i pozwala zaoszczędzić sporo czasu w porównaniu z ręcznym powtarzaniem czynności. Aby uzyskać więcej informacji na temat importu i eksportu danych, zapoznaj się z naszym samouczkiem dotyczącym konwersji między różnymi formatami arkuszy kalkulacyjnych.

Co jeszcze mogę zrobić podczas pisania plików Excel?

Zapisywanie danych to dopiero początek. Solidna biblioteka VB.NET dla programu Excel powinna oferować pełną Suite funkcji umożliwiających automatyzację wszelkich zadań związanych z arkuszami kalkulacyjnymi. IronXL oferuje szeroki zakres możliwości, w tym:

  • Formuły: Programowe ustawianie i obliczanie formuł. Można przypisać formułę do komórki Value (np. sheet("C1").Value = "=SUM(A1:B1)"), a IronXL obliczy wynik.
  • Wykresy: Twórz różne rodzaje wykresów na podstawie danych z arkusza, aby wizualizować informacje.
  • Sprawdzanie poprawności danych: Egzekwowanie reguł dotyczących komórek, takich jak zezwalanie wyłącznie na liczby z określonego zakresu lub wartości z listy rozwijanej.
  • Formatowanie warunkówe: stosowanie stylów do komórek w oparciu o ich wartości, co pomaga wyróżnić ważne punkty danych.
  • Bezpieczeństwo i ochrona: Chroń arkusze lub całe skoroszyty za pomocą haseł, aby kontrolować dostęp i zapobiegać modyfikacjom.

Funkcje te umożliwiają pełną automatyzację złożonych procesów generowania raportów i analizy danych bezpośrednio w aplikacjach .NET.

Zacznij zapisywać dane do plików Excel w VB.NET już dziś

Jak pokazano, zapisywanie danych do plików Excel w VB.NET jest znacznie uproszczone dzięki wykorzystaniu nowoczesnej biblioteki, takiej jak IronXL. Unikając złożoności i zależności związanych z Office Interop, można tworzyć bardziej niezawodne, wydajne i łatwe we wdrożeniu aplikacje. Niezależnie od tego, czy chcesz tworzyć pliki Excel od podstaw, dołączać dane do istniejących raportów, czy eksportować DataTable, IronXL zapewnia intuicyjny i potężny interfejs API, który pozwala wykonać zadanie w sposób wydajny.

Możesz pobrać IronXL i wypróbować go dzięki bezpłatnej licencji próbnej, aby przekonać się, jak łatwo można go zintegrować z Twoimi projektami.

Osoby o szerszych potrzebach powinny pamiętać, że IronXL jest również częścią pakietu Iron Suite for .NET. Dzięki jednej licencji zyskujesz dostęp do kompleksowego zestawu bibliotek do obsługi plików PDF, BarCODE, OCR i nie tylko, co stanowi wyjątkową wartość dla każdego programisty .NET.

Często Zadawane Pytania

Jak zapisywać dane do plików Excel w VB.NET bez użycia Office Interop?

Możesz użyć biblioteki IronXL do zapisywania plików Excel w VB.NET bez konieczności korzystania z Office Interop. IronXL pozwala na płynne tworzenie, odczytywanie i edycję plików Excel bez konieczności instalowania programu Microsoft Excel.

Jakie są zalety korzystania z IronXL zamiast Office Interop do automatyzacji programu Excel?

IronXL oferuje znaczące zalety w porównaniu z Office Interop, takie jak lepsza wydajność, łatwiejsze wdrożenie oraz możliwość działania na serwerach bez konieczności instalowania programu Microsoft Excel. Upraszcza on zadania związane z automatyzacją programu Excel w aplikacjach .NET.

Jak zainstalować IronXL w projekcie VB.NET w celu manipulowania plikami Excel?

Aby zainstalować IronXL w projekcie VB.NET, użyj menedżera pakietów NuGet w Visual Studio. Wyszukaj IronXl.Excel i zainstaluj go. Alternatywnie możesz użyć konsoli menedżera pakietów, wpisując polecenie: Install-Package IronXl.Excel.

Jak utworzyć nowy plik Excel i wstawić dane w VB.NET?

Za pomocą IronXL można utworzyć nowy plik Excel, wywołując metodę WorkBook.Create(). Dostęp do arkusza i wstawianie danych odbywa się przy użyciu notacji A1, np. sheet("A1").Value = "Example Data". Plik należy zapisać za pomocą metody SaveAs().

Jak mogę dołączyć dane do istniejącego pliku Excel za pomocą IronXL?

Aby dołączyć dane do istniejącego pliku Excel za pomocą IronXL, załaduj skoroszyt za pomocą WorkBook.Load("nazwa_pliku.xlsx"). Określ następny pusty wiersz za pomocą sheet.Info.LastRowUsed i wstaw nowe dane. Zapisz zmiany za pomocą workbook.Save().

Czy w VB.NET można wyeksportować tabelę DataTable do arkusza Excel?

Tak, IronXL ułatwia eksportowanie tabeli danych (DataTable) do arkusza Excel. Użyj metody sheet.Write(), aby sprawnie przenieść całą tabelę do arkusza.

Jakie formaty plików Excel obsługuje IronXL?

IronXL obsługuje wiele formatów plików Excel, w tym .xlsx, .xls, .csv i .tsv, co zapewnia elastyczność w obsłudze różnych typów danych arkuszy kalkulacyjnych.

Czy w IronXL mogę formatować komórki Excela i używać formuł?

Tak, IronXL zapewnia szerokie wsparcie w zakresie formatowania i formuł. Można programowo dostosowywać czcionki, kolory, obramowania i formaty liczb oraz ustawiać formuły Excela, takie jak „=SUM(A1:A10)”, do obliczeń.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie