Nếu bạn là nhà phát triển ứng dụng Java làm việc với Excel từ bên trong các ứng dụng Java của bạn, bạn sẽ quan tâm đến việc cung cấp chức năng thao tác dữ liệu Excel trong ứng dụng của bạn. Excel cho phép bạn định dạng kiểu dáng ô, đặt loại ô thành các loại dữ liệu khác nhau, lấp đầy một ô với các màu khác nhau, v.v. Apache POI đóng vai trò là cầu nối giữa Java và Excel, cung cấp các công cụ để thao tác Excel XLSX FILE theo chương trình. Trong loạt bài viết trên blog này, chúng tôi sẽ tiết lộ nghệ thuật thao tác tế bào Excel bằng cách sử dụng Apache Poi trong Java. Hãy để lặn và khám phá sức mạnh tổng hợp của mã và bảng tính!

Bảng nội dung {.

Trong suốt blog, chúng tôi sẽ đi qua các mẫu mã và giải thích tương tự cho những điều sau đây:

  1. Tạo các ô trong tệp Excel
  2. Tạo các ô ngày trong Excel
  3. Làm việc với các loại ô khác nhau
  4. Thiết lập sự xuất hiện của ô

Làm việc với các ô trong tệp excel trong java

Tạo các ô trong tệp 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);
}

Đoạn mã mã Java trên cho thấy việc sử dụng API POI Apache để làm việc với các ô trong sổ làm việc Excel. Mã tạo ra một sổ làm việc excel mới (\ **xssfworkbook** \ \), khởi tạo một tờ trong sổ làm việc và sau đó điền các ô với nhiều loại dữ liệu khác nhau. Đầu tiên, mã tạo ra một tờ mới có tên là **Tờ mới** . Sau đó, nó tạo ra một hàng tại Index 0 trên trang tính và tiến hành lấp đầy các ô trong hàng đó. Ô đầu tiên (chỉ mục 0) được gán giá trị số nguyên là 1 bằng phương thức \ setCellValue `. Ngược lại, ô thứ hai (INDEX 1) được đặt thành giá trị thập phân là 1,2 trực tiếp trong phương thức \ **createCell** \. Ô thứ ba (INDEX 2) chứa một giá trị chuỗi Đây là một chuỗi được tạo ra bằng phương thức \ **createrichtextString** \ từ phiên bản \ **XSSFCRationHelper** \ . Cuối cùng, ô thứ tư (INDEX 3) được điền với giá trị boolean là đúng. Sau khi các giá trị ô được đặt, mã ghi sổ làm việc kết quả vào một tệp excel có tên là Work Workbook.xlsx, bằng cách sử dụng \ fileOutputStream `.

Tạo ngày loại ô {.

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);
}

Đoạn mã Java này hiển thị việc sử dụng API POI Apache để làm việc với các ô ngày trong một sổ làm việc Excel. Mã bắt đầu bằng cách tạo một sổ làm việc excel mới (\ **xssfworkbook** \). Ô đầu tiên (chỉ mục 0) được dự định giữ giá trị ngày. A \ **Ngày** \ Đối tượng biểu thị ngày và thời gian hiện tại được đặt làm giá trị ô ô bằng phương thức \ **setCellValue** \ . Tế bào này không được tạo kiểu rõ ràng như một ngày. Đối với ô thứ hai (INDEX 1), kiểu ô mới (\ CellStyle `) được tạo bằng phương thức \ createCellStyle \ của sổ làm việc. Kiểu này sau đó được cấu hình để có một định dạng ngày và thời gian cụ thể bằng phương thức \ setDataformat \. \ Createdataformat (). Ô thứ hai được gán giá trị ngày và thời gian hiện tại và kiểu ô mới được tạo được áp dụng cho nó bằng phương thức \ setcellstyle `. Tế bào thứ ba (INDEX 2) trình bày một phương pháp thay thế để điền các ô kiểu ngày sử dụng \ java.util.calendar \. Tương tự như ô thứ hai, kiểu ô tùy chỉnh cũng được áp dụng cho ô này.

Làm việc với các loại ô khác nhau

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);
}

Trong mẫu mã này, các kiểu tế bào khác nhau được áp dụng cho các ô trong tệp Excel bằng API APACHE POI như được giải thích trong các bước sau.

  1. Một hàng được tạo tại chỉ mục 2 trên trang tính bằng cách sử dụng \ **createrow** (2) \. Các tế bào sau đó được điền trong hàng này với dữ liệu sau.
  2. ô đầu tiên (chỉ mục 0) được gán giá trị thập phân là 1.1 bằng phương thức \ **setCellValue** \.
  3. Trong ô thứ hai (chỉ mục 1), ngày và thời gian hiện tại được chèn bằng cách sử dụng đối tượng \ date \ thông qua phương thức \ **setCellValue** \ `.
  4. ô thứ ba (chỉ mục 2) chứa ngày và thời gian từ phiên bản \ lịch \, được đặt bằng phương thức \ **setCellValue** \.
  5. ô thứ tư (INDEX 3) giữ văn bản Một chuỗi.
  6. ô thứ năm (INDEX 4) được chỉ định cho giá trị boolean là đúng.
  7. Di chuyển về phía trước, một loại ô cụ thể được gán cho ô thứ sáu (chỉ mục 5) bằng cách gọi phương thức \ **setCellType** \. Tế bào này được cấu hình dưới dạng ô lỗi bằng cách sử dụng \ **celltype.error** \ liệt kê, cho biết nó sẽ hiển thị giá trị lỗi. Cuối cùng, sổ làm việc đã được sửa đổi được ghi vào một tệp có tên là Work Workbook.xlsx, bằng cách sử dụng A \ **FileOutputStream** \. Tóm lại, ví dụ mã này trình bày cách thiết lập sổ làm việc Excel, áp dụng các kiểu ô khác nhau để phù hợp với các loại dữ liệu khác nhau và cuối cùng lưu sổ làm việc được sửa đổi vào một tệp. Minh họa thực tế này giới thiệu các khả năng của thư viện Apache POI để làm việc với các tệp Excel trong Java.

Cài đặt xuất hiện ô

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();

Đoạn mã này thể hiện cách thao tác với sự xuất hiện của các ô trong một tệp Excel bằng thư viện Apache POI trong Java. Điều này đạt được bằng cách sử dụng các bước sau.

  1. Một hàng được tạo tại chỉ mục 1 trên trang tính bằng cách sử dụng \ createrow (1) \. Những thay đổi sau đây được thực hiện cho các ô trong hàng này.
  2. Đối với ô đầu tiên (chỉ mục 1), kiểu ô tùy chỉnh được tạo bằng cách sử dụng \ wb.CreateCellStyle () \. Kiểu này được cấu hình với màu nền Aqua bằng cách sử dụng \ setfillbackgroundColor \ và \ indexedColors.aqua.getIndex () \. Mẫu cho nền được đặt thành các điểm lớn của các điểm lớn bằng cách sử dụng \ setFillPotype (fillPatternType.big_spots) \. Một ô được tạo trong hàng này tại INDEX 1 và chứa đầy giá trị của X X. Kiểu được tạo trước đó được áp dụng cho ô này bằng cách sử dụng \ setcellstyle \.
  3. Đối với ô thứ hai (chỉ mục 2), kiểu ô mới được tạo. Phong cách này được thiết kế với màu nền trước bằng cách sử dụng \ setfillforegroundColor \ và \ indexedColors.orange.getindex () \. Mẫu điền được đặt thành nền trước rắn, sử dụng \ setFillPotype (fillPatternType.solid_foreground) \. Một ô khác được tạo tại INDEX 2 trong cùng một hàng và được điền với giá trị X X X. Kiểu mới được tạo sau đó được gán cho ô này bằng cách sử dụng \ setcellstyle \. Sau khi định cấu hình sự xuất hiện của ô, sổ làm việc được sửa đổi được ghi vào một tệp có tên là Work Workbook.xlsx, bằng cách sử dụng A \ FileOutputStream \. Tóm lại, ví dụ mã này hiển thị cách sử dụng thư viện Apache POI để thao tác sự xuất hiện của ô trong một tệp Excel. Các kỹ thuật được chứng minh liên quan đến việc tạo ra các kiểu ô tùy chỉnh để điều khiển nền và màu tiền cảnh, cũng như điền các mẫu, cung cấp sự linh hoạt trong các bảng tính Excel tùy chỉnh trực quan bằng Java.

Kết luận

Trong tất cả các ví dụ Java trên cho thư viện Apache POI, chúng tôi đã trình diễn cách làm việc với nội dung tệp Excel từ trong ứng dụng Java của bạn. Các mẫu mã cho thấy cách tạo các ô trong một tệp excel, đặt sự xuất hiện của chúng, đặt kiểu ô thành các loại dữ liệu khác nhau như chuỗi, số, thập phân, v.v. và cách đặt loại ô cho đến loại ngày. Chúng tôi sẽ thêm nhiều ví dụ để làm việc với các tệp Excel bằng cách sử dụng Apache POI cho Java, vì vậy hãy theo dõi.

Xem thêm