C# – Tworzenie pliku Excel.

C# – Tworzenie pliku Excel.

Pokaże teraz jak skonstruować plik Excel w C#. W tym samouczku użyjemy biblioteki Open XML, C# i .NET Core. Zaczynajmy!

  1. Przechodzimy do Visual Studio 2019 i utworzymy nową aplikację konsolową C#.
  2. Musimy dodać odniesienie do biblioteki: DocumentFormat.OpenXml
  3. Dodajemy nową klasę i nazwjemy ja np. Test
  4. I tworzymy publiczną metodę o nazwie CreateExcelDoc. W tej metodzie utworzymy i zapiszemy nasz plik Excel.
  5. Importujemy odpowiednie przestrzenie nazw.
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

namespace Pdf
{
    public class Test
    {
        public void CreateExcelDoc(string fileName)
        {
        }
    }
}

6. Teraz tworzymy nowy dokument arkusza kalkulacyjnego i przekazujemy nazwę pliku i dokument jako parametry.

using (SpreadsheetDocument document = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook))
{  }

7. SpreadsheetDocument musi mieć WorkbookPart i WorkSheetPart. Dodamy następujący kod w bloku using.

using (SpreadsheetDocument document = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook))

{
      WorkbookPart workbookPart = document.AddWorkbookPart();
      workbookPart.Workbook = new Workbook();

      WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
      worksheetPart.Worksheet = new Worksheet(new SheetData());         
}

8. Dołączamy Arkusze do skoroszytu. Arkusze będą zawierać jeden lub wiele arkuszy.

Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

9. Następnie możemy dodać jeden lub wiele Arkuszy.

Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Arkusz 1" };
sheets.Append(sheet);

10. Na koniec zapis skoroszytu.

workbookPart.Workbook.Save();

11. I teraz w metodzie Main klasy Program utwórzmy obiekt naszej klasy test i wywołajmy metodę CreateExcelDocument, przekazując ścieżkę do pliku.

static void Main(string[] args)
{
     Test test = new Test();
     test.CreateExcelDoc(@"C:\Excel\test.xlsx");
}

12. Uruchommy projekt i sprawdź wygenerowany plik Excel.

13. Jeśli chcemy coś zapisać dodajemy SheetData do arkusza. SheetData działa jak kontener, do którego będą trafiać wszystkie wiersze i kolumny.

SheetData sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());

14. Następnie dodajemy wiersz Row. Klasa Row reprezentuje wiersz w arkuszu kalkulacyjnym programu Excel. Każdy wiersz może zawierać jedną lub więcej komórek Cell. Każda komórka będzie miała CellValue, która zawiera rzeczywistą wartość w komórce.

Row row = new Row();
Cell cell = new Cell() { CellValue = new CellValue("test"), DataType = CellValues.String };
row.Append(cell);

15. Dodaj wiersz do arkusza kalkulacyjnego.

sheetData.AppendChild(row);

I na końcu zapisujemy arkusz.

worksheetPart.Worksheet.Save();

16. Uruchommy projekt i sprawdź wygenerowany plik Excel.

Cały kod klasy Test.

public class Test
{
        public void CreateExcelDoc(string fileName)
        {
            using (SpreadsheetDocument document = SpreadsheetDocument.Create(fileName, SpreadsheetDocumentType.Workbook))
            {
                WorkbookPart workbookPart = document.AddWorkbookPart();
                workbookPart.Workbook = new Workbook();

                WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
                worksheetPart.Worksheet = new Worksheet();

                Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

                Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Arkusz 1" };
                sheets.Append(sheet);

                workbookPart.Workbook.Save();

                SheetData sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());
                Row row = new Row();
                Cell cell = new Cell() { CellValue = new CellValue("napis test "), DataType = CellValues.String };
                row.Append(cell);

                sheetData.AppendChild(row);
                worksheetPart.Worksheet.Save();
            }
       }
}

https://github.com/mariuszjurczenko/ExcelOpenXml

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *