Jeśli jesteś programistą aplikacji Java, pracującym z Excel z aplikacji Java, byłbyś zainteresowany zapewnieniem funkcjonalności danych Excel w aplikacji. Excel pozwala sformatować styl komórki, ustawić typ komórki na różne typy danych, wypełnić komórkę różnymi kolorami i tak dalej. Apache POI służy jako pomost między Java i Excel, oferując narzędzia do manipulowania programem Excel pliki XLSX. W tej serii blogów zaprezentujemy sztukę manipulacji Cell Excel za pomocą Apache Poi w Javie. Zanurzmy się i odkryjmy synergię kodu i arkuszy kalkulacyjnych!

Spis treści

W całym blogu przejdziemy przez próbki kodu i wyjaśnienie tego samego dla następujących:

  1. Tworzenie komórek w pliku Excel
  2. Utwórz komórki dat w programie Excel
  3. Praca z różnymi rodzajami komórek
  4. Ustawienie wyglądu komórek

Praca z komórkami w pliku Excel w java

Tworzenie komórek w pliku Excel

//Create Cells
XSSFWorkbook wb = new XSSFWorkbook();
XSSFCreationHelper createHelper = wb.getCreationHelper();
XSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
// Create a cell and put a value in it.
Cell cell = row.createCell(0);
cell.setCellValue(1);
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(createHelper.createRichTextString("This is a string"));
row.createCell(3).setCellValue(true);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

Powyższy fragment kodu Java pokazuje użycie API API APACHES POI do pracy z komórkami w skoroszycie Excel. Kod tworzy nowy skoroszyt Excel (\ **xssfworkbook** \), inicjuje arkusz w skoroszycie, a następnie zaludni się komórki o różnych typach danych. Po pierwsze, kod tworzy nowy arkusz o nazwie „ nowy arkusz ”. Następnie generuje wiersz w indeksie 0 na arkuszu i przechodzi do wypełnienia komórek w tym rzędzie. Pierwszą komórkę (indeks 0) przypisuje się wartość całkowitą 1 za pomocą metody \ **setCellValue** \. Natomiast druga komórka (indeks 1) jest ustawiona na wartość dziesiętną 1,2 bezpośrednio w metodzie \ **CreateCell** \. Trzecia komórka (indeks 2) zawiera wartość ciągów „To jest ciąg” utworzona za pomocą metody \ **createrichtextString** \ z instancji \ **xssfCreationHelper** \. Wreszcie, czwarta komórka (indeks 3) jest wypełniona wartością logiczną „prawdziwą”. Po ustawieniu wartości komórki kod zapisuje wynikowy skoroszyt do pliku Excel o nazwie „Worgbook.xlsx” za pomocą \ **FileoutputStream** \.

Tworzenie komórek typu daty

XSSFWorkbook wb = new XSSFWorkbook();
//Workbook wb = new XSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
org.apache.poi.ss.usermodel.Sheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
// Create a cell and put a date value in it.  The first cell is not styled
// as a date.
Cell cell = row.createCell(0);
cell.setCellValue(new Date());
// we style the second cell as a date (and time).  It is important to
// create a new cell style from the workbook otherwise you can end up
// modifying the built in style and effecting not only this cell but other cells.
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);
//you can also set date as java.util.Calendar
cell = row.createCell(2);
cell.setCellValue(Calendar.getInstance());
cell.setCellStyle(cellStyle);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

Ten fragment kodu Java prezentuje użycie interfejsu API API Apache do pracy z komórkami typu daty w skoroszycie Excel. Kod zaczyna się od utworzenia nowego skoroszytu Excel (\ **XSSFworkbook** \). Pierwsza komórka (indeks 0) ma na celu utrzymanie wartości daty. A \ **Data** \ Obiekt reprezentujący bieżącą datę i godzinę jest ustawiona jako wartość komórki za pomocą metody \ **setCellValue** \. Ta komórka nie jest wyraźnie stylizowana jako data. W przypadku drugiej komórki (indeks 1) nowy styl komórki (\ CellStyle \) jest tworzony przy użyciu metody \ CreateCellStyle \ skoroszytu. Ten styl jest następnie konfigurowany tak, aby miał określony format daty i godziny za pomocą metody \ setDataFormat \. \ CreatedATaFormat (). GetFormat („ M/D/YY H: MM ”) \ tworzy niestandardowy format daty z wzorem formatu „M/D/YY H: MM”. Drugą komórkę przypisuje się bieżącą wartość daty i godziny, a nowo utworzony styl komórki jest do niej stosowany za pomocą metody \ setCellStyle \. Trzecia komórka (wskaźnik 2) pokazuje alternatywną metodę wypełniania komórek typu daty za pomocą \ java.util.calendar \. Podobnie jak w drugiej komórce, niestandardowy styl komórki jest również stosowany do tej komórki.

Praca z różnymi typami komórek

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow(2);
row.createCell(0).setCellValue(1.1);
row.createCell(1).setCellValue(new Date());
row.createCell(2).setCellValue(Calendar.getInstance());
row.createCell(3).setCellValue("a string");
row.createCell(4).setCellValue(true);
row.createCell(5).setCellType(CellType.ERROR);		// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

W tej próbce kodu różne style komórek są stosowane do komórek w pliku Excel za pomocą API API APACHES, jak wyjaśniono w następujących krokach.

  1. Rząd jest tworzony w indeksie 2 na arkuszu za pomocą \ **Creatow** (2) \. Komórki są następnie wypełnione w tym rzędzie z następującymi danymi.
  2. Pierwszą komórkę (indeks 0) przypisuje się wartość dziesiętną 1.1 przy użyciu metody \ **setCellValue** \.
  3. W drugiej komórce (indeks 1) bieżąca data i godzina są wstawiane za pomocą obiektu \ data \ metodą \ **setCellValue** \.
  4. Trzecia komórka (indeks 2) zawiera datę i godzinę z instancji \ kalendarz \, ustaw za pomocą metody \ **setCellValue** \.
  5. Czwarta komórka (indeks 3) zawiera tekst „ciąg”.
  6. Piąta komórka (indeks 4) jest oznaczona dla wartości logicznej „prawdziwie”.
  7. Idąc naprzód, określony typ komórki jest przypisany do szóstej komórki (indeks 5), wywołując metodę \ **setCellType** \. Ta komórka jest skonfigurowana jako komórka błędów przy użyciu wyliczania \ **CellType.error** \, która wskazuje, że wyświetli wartość błędu. Wreszcie zmodyfikowany skoroszyt jest zapisywany do pliku o nazwie „Wordbook.xlsx” za pomocą \ **FileoutputStream** \. Podsumowując, ten przykład kodu pokazuje, jak ustanowić skoroszyt Excel, zastosować różne style komórek, aby pomieścić różne typy danych, a ostatecznie zapisz zmodyfikowany skoroszyt na pliku. Ta praktyczna ilustracja pokazuje możliwości biblioteki APACHE POI do pracy z plikami Excel w Javie.

Ustawienie wyglądu komórki

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(1);
// Aqua background
CellStyle style = wb.createCellStyle();
style.setFillBackgroundColor(IndexedColors.AQUA.getIndex());
style.setFillPattern(FillPatternType.BIG_SPOTS);
Cell cell = row.createCell(1);
cell.setCellValue("X");
cell.setCellStyle(style);
// Orange "foreground", foreground being the fill foreground not the font color.
style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell = row.createCell(2);
cell.setCellValue("X");
cell.setCellStyle(style);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}
wb.close();

Ten fragment kodu pokazuje, jak manipulować wyglądem komórek w pliku Excel za pomocą biblioteki APACHE POI w Javie. Osiąga się to za pomocą następujących kroków.

  1. Rząd jest tworzony w indeksie 1 na arkuszu za pomocą \ createow (1) \. Poniższe zmiany są wprowadzane do komórek w tym rzędzie.
  2. W przypadku pierwszej komórki (indeks 1) tworzony jest niestandardowy styl komórki przy użyciu \ wb.createCellStyle () \. Ten styl jest skonfigurowany z kolorem tła Aqua za pomocą \ setfillbackgroundColor \ i \ indexedColors.Aqua.getIndex () \ . Wzór tła jest ustawiony na „duże plamy” za pomocą \ setfillpattern (FillPatternType.big_spots) `. Komórka jest tworzona w tym rzędzie w indeksie 1 i wypełniona wartością „x”. Wcześniej utworzony styl jest stosowany do tej komórki za pomocą \ setCellStyle \.
  3. Dla drugiej komórki (indeks 2) tworzy się nowy styl komórki. Ten styl został zaprojektowany z kolorem pomarańczowym pierwszego planu przy użyciu \ setfillforegroundColor \ i \ indexedColors.orange.getIndex () \. Wzór wypełnienia jest ustawiony na „stały pierwszy plan” za pomocą \ setfillpattern (FillPatternType.solid_foreground) \. Kolejna komórka jest tworzona w indeksie 2 w tym samym rzędzie i wypełniona wartością „x”. Nowo wygenerowany styl jest następnie przypisywany do tej komórki za pomocą \ setCellStyle \. Po skonfigurowaniu wyglądu komórek zmodyfikowany skoroszyt jest zapisywany do pliku o nazwie „Worgbook.xlsx” za pomocą \ FileoutputStream \. Podsumowując, ten przykład kodu pokazuje, jak używać biblioteki APACHE POI do manipulowania wyglądem komórki w pliku Excel. Wykazane techniki obejmują tworzenie niestandardowych stylów komórek do kontrolowania tła i kolorów pierwszego planu, a także wzorców wypełnienia, zapewniając elastyczność w dostosowywaniu wizualnych arkuszy kalkulacyjnych Excel za pomocą Java.

Wniosek

We wszystkich powyższych przykładach Java dla biblioteki APACHE POI pokazaliśmy, jak pracować z zawartością pliku Excel z aplikacji Java. Próbki kodu pokazały, jak tworzyć komórki w pliku Excel, ustawić ich wygląd, ustawić styl komórki na różne typy danych, takie jak ciąg, numeryczne, dziesiętne itp. Oraz jak ustawić typ komórki do typu data. Dodamy więcej przykładów pracy z plikami Excel za pomocą Apache POI dla Java, więc bądźcie czujni.

Zobacz także