Xu Hướng 2/2024 # Parse Word Document Using Apache Poi Example # Top 7 Xem Nhiều

Bạn đang xem bài viết Parse Word Document Using Apache Poi Example được cập nhật mới nhất tháng 2 năm 2024 trên website Hoisinhvienqnam.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

In this article we will be discussing about ways and techniques to read word documents in Java using Apache POI library. The word document may contain images, tables or plain text. Apart from this a standard word file has header and footers too. Here in the following examples we will be parsing a word document by reading its different paragraph, runs, images, tables along with headers and footers. We will also take a look into identifying different styles associated with the paragraphs such as font-size, font-family, font-color etc.

Maven Dependencies

Following is the poi maven depedency required to read word documents. For latest artifacts visit here

chúng tôi

&ltdependencies&gt &ltdependency&gt &ltgroupId&gt

org.apache.poi

&lt/groupId&gt &ltartifactId&gt

poi-ooxml

&lt/artifactId&gt &ltversion&gt

3.16

&lt/version&gt &lt/dependency&gt &lt/dependencies&gt Reading Complete Text from Word Document

The class XWPFDocument has many methods defined to read and extract .docx file contents. getText() can be used to read all the texts in a .docx word document. Following is an example.

TextReader.java

public class

TextReader {

public static void

main(String[] args) {

try

{ FileInputStream fis =

new

FileInputStream(

"test.docx"

); XWPFDocument xdoc =

new

XWPFDocument(OPCPackage.open(fis)); XWPFWordExtractor extractor =

new

XWPFWordExtractor(xdoc); System.

out

.println(extractor.getText()); }

catch

(Exception ex) { ex.printStackTrace(); } } } Reading Headers and Foooters of Word Document

HeaderFooter.java

public class

HeaderFooterReader {

public static void

main(String[] args) {

try

{ FileInputStream fis =

new

FileInputStream(

"test.docx"

); XWPFDocument xdoc =

new

XWPFDocument(OPCPackage.open(fis)); XWPFHeaderFooterPolicy policy =

new

XWPFHeaderFooterPolicy(xdoc); XWPFHeader header = policy.getDefaultHeader();

if

(header !=

null

) { System.

out

.println(header.getText()); } XWPFFooter footer = policy.getDefaultFooter();

if

(footer !=

null

) { System.

out

.println(footer.getText()); } }

catch

(Exception ex) { ex.printStackTrace(); } } }

Output

This is Header

This is footer

Read Each Paragraph of a Word Document

Among the many methods defined in XWPFDocument class, we can use getParagraphs() to read a .docx word document paragraph chúng tôi method returns a list of all the paragraphs(XWPFParagraph) of a word document. Again the XWPFParagraph has many utils method defined to extract information related to any paragraph such as text alignment, style associated with the paragrpahs.

To have more control over the text reading of a word document,each paragraph is again divided into multiple runs. Run defines a region of text with a common set of properties.Following is an example to read paragraphs from a .docx word document.

ParagraphReader.java

public class

ParagraphReader {

public static void

main(String[] args) {

try

{ FileInputStream fis =

new

FileInputStream(

"test.docx"

); XWPFDocument xdoc =

new

XWPFDocument(OPCPackage.open(fis)); List paragraphList = xdoc.getParagraphs();

for

(XWPFParagraph paragraph : paragraphList) { System.

out

.println(paragraph.getText()); System.

out

.println(paragraph.getAlignment()); System.

out

.print(paragraph.getRuns().size()); System.

out

.println(paragraph.getStyle());

// Returns numbering format for this paragraph, eg bullet or lowerLetter.

System.

out

.println(paragraph.getNumFmt()); System.

out

.println(paragraph.getAlignment()); System.

out

.println(paragraph.isWordWrapped()); System.

out

.println(

"********************************************************************"

); } }

catch

(Exception ex) { ex.printStackTrace(); } } } Reading Tables from Word Document

Following is an example to read tables present in a word document. It will print all the text rows wise.

TableReader.java

public class

TableReader {

public static void

main(String[] args) {

try

{ FileInputStream fis =

new

FileInputStream(

"test.docx"

); XWPFDocument xdoc =

new

XWPFDocument(OPCPackage.open(fis)); Iterator bodyElementIterator = xdoc.getBodyElementsIterator();

while

(bodyElementIterator.hasNext()) { IBodyElement element = bodyElementIterator.next();

if

(

"TABLE"

.equalsIgnoreCase(element.getElementType().name())) { List tableList = element.getBody().getTables();

for

(XWPFTable table : tableList) { System.

out

.println(

"Total Number of Rows of Table:"

+ table.getNumberOfRows());

for

(

int

i = 0; i for (

int

j = 0; j out.println(table.getRow(i).getCell(j).getText()); } } } } } }

catch

(Exception ex) { ex.printStackTrace(); } } } Reading Styles from Word Document

Styles are associated with runs of a paragraph. There are many methods available in the XWPFRun class to identify the styles associated with the text.There are methods to identify boldness, highlighted words, capitalized words etc.

StyleReader.java

public class

StyleReader {

public static void

main(String[] args) {

try

{ FileInputStream fis =

new

FileInputStream(

"test.docx"

); XWPFDocument xdoc =

new

XWPFDocument(OPCPackage.open(fis)); List paragraphList = xdoc.getParagraphs();

for

(XWPFParagraph paragraph : paragraphList) {

for

(XWPFRun rn : paragraph.getRuns()) { System.

out

.println(rn.isBold()); System.

out

.println(rn.isHighlighted()); System.

out

.println(rn.isCapitalized()); System.

out

.println(rn.getFontSize()); } System.

out

.println(

"********************************************************************"

); } }

catch

(Exception ex) { ex.printStackTrace(); } } } Reading Image from Word Document

Following is an example to read image files from a word document.

public class

ImageReader {

public static void

main(String[] args) {

try

{ FileInputStream fis =

new

FileInputStream(

"test.docx"

); XWPFDocument xdoc =

new

XWPFDocument(OPCPackage.open(fis)); List pic = xdoc.getAllPictures();

if

(!pic.isEmpty()) { System.

out

.print(pic.get(0).getPictureType()); System.

out

.print(pic.get(0).getData()); } }

catch

(Exception ex) { ex.printStackTrace(); } } } Conclusion Download source

Đọc Ghi File Ms Word Bằng Java Với Apache Poi

Đọc ghi file MS Word bằng Java với Apache POI

Apache POI là một thư viện mã nguồn mở cung cấp bởi apache được sử dụng để xử lý các file office như word, excel, powerpoint…

XWPFDocument:Được sử dụng để đọc ghi các file MS-Word với định dạng .docx (đọc, lưu file, thêm đoạn văn bản…)

XWPFParagraph: Được dùng để tạo đoạn paragraph trong tài liệu word. (Tùy chỉnh căn lề, border)

XWPFRun: Được sử dụng thể thêm text vào paragraph (Tùy chỉnh font, size…)

XWPFTable: Được dùng để thêm mới bảng vào file (Thêm cột, thêm dòng, cài đặt chiều rộng cho cột)

XWPFWordExtractor: Đây là class cơ bản được dùng để lấy text đơn giản từ tài liệu word (lấy tất cả text bên trong file word)

Thư viện sử dụng:

Ví dụ ghi file MS Word: package stackjava.com.apachepoi.word.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; public class DemoWrite { public static void main(String[] args) throws IOException { XWPFDocument document = new XWPFDocument(); XWPFParagraph paragraph1 = document.createParagraph(); XWPFRun run = paragraph1.createRun(); run.setText("Paragraph 1: stackjava.com"); XWPFParagraph paragraph2 = document.createParagraph(); run = paragraph2.createRun(); run.setText("Paragraph 2: demo read/write file MS-Word"); FileOutputStream out = new FileOutputStream(new File("demo-apache-apoi-word.docx")); document.write(out); out.close(); document.close(); System.out.println("successully"); } }

Kết quả:

package stackjava.com.apachepoi.word.demo; import java.io.FileInputStream; import java.util.List; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; public class DemoRead { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("demo-apache-apoi-word.docx"); XWPFDocument document = new XWPFDocument(OPCPackage.open(fis)); for (XWPFParagraph paragraph : paragraphList) { System.out.println(paragraph.getText()); } System.out.println("=============================="); System.out.println("Read file using XWPFWordExtractor "); XWPFWordExtractor wordExtractor = new XWPFWordExtractor(document); System.out.println(wordExtractor.getText()); wordExtractor.close(); document.close(); } catch (Exception ex) { ex.printStackTrace(); } } }

Kết quả:

Paragraph 1: stackjava.com Paragraph 2: demo read/write file MS-Word ============================== Read file using XWPFWordExtractor Paragraph 1: stackjava.com Paragraph 2: demo read/write file MS-Word

Okay, Done!

References:

https://poi.apache.org/document/

How To Use The Document Map In Microsoft Word

Once upon a time, Word’s Document Map had a poor reputation. That reputation was justified. Until Word 2002, it was very flaky. I’ve had Word 2000 crash while displaying the Document Map more times than I can remember.

But from Word 2002, it improved a lot, and in Word 2010 it has been re-vamped and moved to centre stage. The document map is very useful, so give it a go.

How to invoke Document Map

Figure 1: The three parts to the Navigation Pane in Word 2010

To see the Document Map:

In all versions except Word 2007: Alt-V-D. (We lost the old keyboard shortcut in Word 2007, but it was reinstated for Word 2010!!)

You’ll see the Document Map on the left of your Word screen.

What does the Document Map do?

Strictly speaking, it doesn’t do anything. It just sits there on the left of your screen. What it shows you, however, can be very useful. It shows an outline of your document. That is, it shows all the headings in your document. You get to choose whether to show just the highest-level headings, or lower-level headings as well.

How to get Document Map to display something useful

To get Document Map to display useful headings, apply the built-in heading styles to the headings in your document.

There are many ways to apply the heading styles.

In Word 2003 and earlier versions, the easiest way is probably to use the Styles combobox on the toolbar. (And if you’re used to using that, in Word 2007 and Word 2010, you can reinstate the Styles combobox to the Quick Access Toolbar.)

From the Styles combo box, choose Heading 1 for your main headings, Heading 2 for sub-headings and Heading 3 for minor headings, and so on.

How to use the Document Map to move around your document quickly How to use the Document Map to see where you are in a document

If you have a really big document, it’s sometimes easy to get “lost”. You can see a page of text, but it’s hard to know where you are in the document.

Document Map is a good way to solve this problem. As you move around your document, the Document Map will highlight the current heading.

For example, in Figure 1, I can see that the cursor is within the section with the heading “Balloons”. In Figure 2, I can see that the cursor is within the section “Sea transport”.

How to control the number of levels that Document Map displays

There are two controls available:

How to change the format of the text in the Document Map

In Word 2007 and earlier versions, text in the Document Map is shown in style Document Map. Modify the Document Map style to suit your needs. I find that 10pt Tahoma works well. This feature was removed from Word 2010.

How to change the width of the Document Map

Hover over the vertical bar separating the Document Map from your text. Drag left or right to suit your needs. See Figure 3.

Figure 3: Hover over the vertical bar to the right of the Document Map and drag to change the width of the Document Map.

How to use the Document Map in Word 2010

The Document Map has changed substantially in Word 2010 (Figure 4). It’s not even officially called the Document Map any more, but since it does not have a new name, it seems sensible to keep using the old one.

It now shares the new “Navigation Pane” with a panel for Find and one for Thumbnails. (Except they’re not called Find and Thumbnails any more either; but, like the Document Map they don’t have new names, so using the old names seems sensible.)

There good things about the changes:

Best of all: I can drag a heading in the Document Map, and the heading, and all the paragraphs of text “below” it, will move.

The old pre-Word 2007 keyboard shortcut of Alt-V-D has been reinstated. So I can open the new Document Map with the keyboard shortcut I’ve been using for a decade or more.

Word no longer guesses about what to show in the Document Map. It displays paragraphs based solely on each paragraph’s outline level.

But there are things I don’t like so much about the new Document Map:

It shows a lot less content than the old one. It’s pretty, but because the headings are in little buttons, each one takes up a lot more space. We lose 40% to 50% of the content compared with Word 2007 (the smaller your screen resolution, the bigger the hit).

To change the number of heading levels displayed in the Document Map requires one more mouse movement than the old version. One more mouse movement in this case is a change from 2 to 3, or a reduction in productivity of 50%.

There is some [NOTE: outdated link removed by Lene Fredborg 29-Dec-2024] some good material about the new Document Map at chúng tôi written during the beta testing of Office 2010.

There are several problems with Document Map:

Document Map doesn’t show headings that are in tables. I find this really annoying. It’s a known bug that has been inherited by the “new” Document Map of Word 2010. I guess it won’t get fixed any time soon.

Document Map doesn’t show headings that are in text boxes. Even the “new” Document Map of Word 2010 fails to show headings in a text box. Until Word 2007, text in a text box did not appear in the table of contents. So we weren’t likely to put a heading in a text box. Since that bug was fixed, we can put headings in a text box, and it’s the only straight-forward way to lay text over an image. So the failure of the new document map to show headings is particularly irritating.

In the Paragraph dialog, on the Line and Page Breaks tab, tick “Page Break Before”. Or, better, use the “Keep with Next” setting to keep the paragraph on the same page as the next paragraph. Or, better still, format your document using styles that have been modified with an appropriate “Keep with next” setting.

In Word 2007 and earlier versions, sometimes the Document Map decides to display tiny, unreadable type. It’s a known bug. The solution is to switch to Outline View and then back again. That is:

For the curious or the frustrated: How does Word decide what to display in Document Map? Word 2007 and earlier versions

More usefully, the Outline Level can be derived from the style you apply to your text. The built-in heading styles have their Outline Level fixed (Heading 1 has Outline Level 1, Heading 2 has Outline Level 2 and so on). If you create a custom style, you can modify it to have the Outline level you choose.

If your document has text with appropriate Outline Levels, Document Map will use those outline levels. If Word can’t find any text with appropriate Outline Levels, then, in Word 2007 and earlier versions, Word will guess. (In Word 2010, Word no longer guesses. Hooray!)

Turn off Document Map.

Create a new Word document.

Copy the following text into your document:

A small line of text The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.Another short line The quick brown fox jumps over the lazy dog. jumps over the lazy dog.Few words here The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

Turn on Document Map.

You can see that Word has guessed that short, bold lines are headings and has changed the Outline Level of the paragraphs.

Since no-one ever wants Word to guess, make sure you apply appropriate styles (which have appropriate Outline Levels) to your text. Then you will be controlling what displays in Document Map.

Word 2010

Word displays text in the Document Map based entirely on the Outline Level of the paragraph. It does not guess.

Acknowledgement Fellow MVP Klaus Linke worked out the problem with the missing heading numbering in Document Map.

Thao Tác Với Excel File Bằng Apache Poi

Khi lập trình với bất cứ hệ thống nào thì việc thao tác với các file excel luôn là điều bắt buộc mọi developer phải nắm được. Và để làm việc hiệu quả với excel file trong java thì tôi xin giới thiệu thư viện Apache POI trong bài viết này. POI là viết tắt của Poor Obfuscation Implementation, đó là một thư viện mã nguồn mở của Java, được cung cấp bởi Apache giúp chúng ta làm việc với các tài liệu của Microsoft như Word, Excel, PowerPoint…

Để thao tác với các file Excel thì POI cung cấp cho chúng ta các khái niệm chính sau:

Workbook: Đây là khái niệm đại diện cho một bảng tính, hay một file Excel.

Sheet: tương đương với các sheet trong file Excel, một workbook có thể có một hoặc nhiều sheet.

Row: đơn vị hàng trong một bảng tính

Cell: đại diện cho một cột trong bảng tính. Như vậy mỗi một ô trong file Excel sẽ được biểu diễn bằng một row và một cell.

Để làm việc với Excel thì chúng ta không cần quan tâm đến tất cả các class trong thư viện POI mà chỉ cần để ý đến 2 loại sau:

Các class có tiếp đầu ngữ là HSSF (Horrible SpreadSheet Format) : Các class giúp đọc và ghi file dang Microsoft Excel (XLS – dạng excel cũ). Ví dụ: HSSFWorkbook, HSSFSheet, HSSFCellStyle,…

Các class có tiếp đầu ngữ là XSSF (XML SpereadSheet Format) : Đọc và ghi định dạng file Open Office XML (XLSX – dạng excel mới).

Nếu bạn sử dụng Maven thì cần thêm dependency của POI vào file pom.xml:

Còn Gradle thì thêm vào build.gradle:

compile "org.apache.poi:poi:3.17"

Trước tiên, ta tạo một class model để có thể ghi các ra các row theo một List data:

public class Employee { private String name; private String email; private Date dateOfBirth; private double daysOfWork; private double salaryPerDay; private Double totalSalary; public Employee(String name, String email, Date dateOfBirth, double daysOfWork, double salaryPerDay, Double totalSalary) { chúng tôi = name; this.email = email; this.dateOfBirth = dateOfBirth; this.daysOfWork = daysOfWork; this.salaryPerDay = salaryPerDay; this.totalSalary = totalSalary; }

Tiếp đến chuẩn bị data raw để ghi vào file excel:

Sau các bước chuẩn bị data, chúng ta tạo một workbook:

Có workbook rồi chúng ta tạo tiếp một sheet trong đó:

Có thể thêm một chút màu sắc font bạt cho đẹp mắt:

Font headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setFontHeightInPoints((short) 14); headerFont.setColor(IndexedColors.RED.getIndex());

Sau đó chúng ta tạo row đầu tiên chứa các tiêu đề của các cột:

Do trong phần model của chúng ta có loại dữ liệu khác đặc biệt là Date (dateOfBirth) nên chúng ta cần một format cho nó:

Tiếp đến là công việc chính, set data vào các ô trong file excel:

Chú ý rằng cột cuối cùng ta dùng công thức để tính tổng lương của mỗi nhân viên nên CellType ở đây sẽ là FORMULA.

Cuối cùng là ghi tất cả ra một file Excel thật và kết thúc việc tạo một file Excel:

Nội dung file employee.xlsx sẽ như sau:

Để đọc một file Excel có sẵn, đầu tiên chúng ta cũng tạo một workbook cho file đó:

Duyệt các sheet trong một workbook:

Vì trong file excel ta vừa tạo chỉ có một sheet nên chúng ta sẽ get nó ra như sau:

Để duyệt các row trong sheet, ta làm như sau:

Sau khi duyệt xong nhớ đóng workbook lại:

Màn hình console sẽ trông như sau:

Từ đây ta có thể nhận thấy đối với kiểu là FORMULA thì khi in ra chúng ta sẽ nhận được công thức của field đó chứ không phải giá trị cuối cùng. Để nhận các giá trị cuối cùng của field thì chúng ta viết thêm hàm sau:

private static Object getCellValue(Cell cell, FormulaEvaluator evaluator) { CellValue cellValue = evaluator.evaluate(cell); switch (cellValue.getCellTypeEnum()) { case BOOLEAN: return cellValue.getBooleanValue(); case NUMERIC: return cellValue.getNumberValue(); case STRING: return cellValue.getStringValue(); case BLANK: return ""; case ERROR: return cellValue.getError(cell.getErrorCellValue()).getStringValue();

Với một cell có kiểu FORMULA bạn có thể in ra công thức của nó và sử dụng FormulaEvaluator để tính toán giá trị của ô cho bởi công thức đó. Sau đó sửa lại đoạn duyệt row như sau:

Kết quả nhận được sẽ như sau:

Để sửa một file Excel thì chúng ta cũng làm tương tự đọc một file Excel. Đầu tiên là tạo một workbook cho nó và một sheet tương ứng:

Workbook workbook = WorkbookFactory.create(new File("./employee.xlsx");

Xác định vị trí cần update lại và định vị nó. Cần chú ý nếu vị trí cần update chưa được tạo thì cần khởi tạo field đó trước, nếu không chương trình sẽ throw một Exception:

Update lại định dạng và giá trị của field đó:

Output ra một file Excel khác và đóng workbook:

https://github.com/tubean/apache-poi-tutorial.git

https://www.callicoder.com/java-write-excel-file-apache-poi/https://www.callicoder.com/java-read-excel-file-apache-poi/

Functions And Formulas That You Can Use In A Word Document

You can use simple formulas in Microsoft Word, such as addition (+), subtraction (-), multiplication (*), or division (/). Also, you can calculate a power of (^):

See How to reference a cell of a Word table for more details.

All functions you can see in the Paste function drop-down list of the Formula dialog box:

ABS ()

Calculates the absolute value of the value inside the parentheses.

AVERAGE ()

Calculates the average of the elements identified inside the parentheses.

COUNT ()

Calculates the number of elements identified inside the parentheses.

DEFINED ()

Evaluates whether the argument inside parentheses is defined. Returns 1 if the argument has been defined and evaluates without error, 0 if the argument has not been defined or returns an error.

IF ()

Evaluates the first argument. Returns the second argument if the first argument is true; returns the third argument if the first argument is false.

INT ()

Rounds the value inside the parentheses down to the nearest integer.

MAX ()

Returns the maximum value of the items identified inside the parentheses.

MIN ()

Returns the minimum value of the items identified inside the parentheses.

MOD ()

Takes two arguments (must be numbers or evaluate to numbers). Returns the remainder after the second argument is divided by the first. If the remainder is 0 (zero), returns 0.0.

NOT

Evaluates whether the argument is true. Returns 0 if the argument is true, 1 if the argument is false. Mostly used inside an IF formula.

OR ()

Takes two arguments. If both are false, returns 0, else returns 1. Mostly used inside an IF formula.

PRODUCT ()

Calculates the product of items identified inside the parentheses.

ROUND ()

Rounds the first argument to the number of digits specified by the second argument. If the second argument is greater than zero ( 0), first argument is rounded down to the specified number of digits. If second argument is zero ( 0), first argument is rounded down to the nearest integer. If second argument is negative, first argument is rounded down to the left of the decimal.

SIGN ()

Takes one argument that must either be a number or evaluate to a number. Evaluates whether the item identified inside the parentheses if greater than, equal to, or less than zero ( 0). Returns 1 if greater than zero, 0 if zero, -1 if less than zero.

SUM ()

Calculates the sum of items identified inside the parentheses.

The arguments can be:

See also this tip in French: Fonctions et formules dans Word.

Đọc Ghi Excel File Sử Dụng Apache Poi

Do vậy, trong bài viết này, mình đã giới thiệu về Apache POI là một thư viện mã nguồn mở cho phép chúng ta thao tác với các tập tin định dạng microsoft office. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu cách đọc và ghi excel file sử dụng Apache POI.

Maven denpendency

Để thao tác được với Excel file, chúng ta cần thêm các denpendency cần thiết.

Một số lưu ý khi sử dụng Apache POI

Bài viết này sẽ hướng dẫn các bạn cách đọc và ghi file excel sử dụng thư viện Apache POI. Tuy nhiên có một số lưu ý sau các bạn cần chú ý để có thể triển khai cho từng trường hợp của mình.

Tiền tố HSSF được đặt trước các tên class dùng để thao tác với các file định dạng Microsoft Excel 2003.

Tiền tố XSFF được đặt trước các tên class dùng để thao tác với các file định dạng Microsoft Excel 2007.

XSSFWorkbook và HSSFWorkbook là các class đại diện cho một excel workbook.

HSSFSheet và XSSFSheet là các class đại diện cho một excel WorkSheet.

Row đại diện cho một dòng.

Cell đại diện cho một ô trong một hàng xác định.

Trong bài hướng dẫn này, các bạn sẽ được hướng dẫn cách đọc ghi file excel Microsoft Excel 2007 có đôi là xlsx, có nghĩa là chúng ta sẽ sử dụng các class có tiền tố là XSFF để đọc file exel.

Ghi excel file

Để ghi một excel file cần qua những bước cơ bản sau:

Tạo workbook.

Tạo một sheet trong workbook.

Tạo một dòng trong sheet.

Thêm một cột trong sheet.

import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileOutputStream; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class Main { public static void main(String[] args) { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("student Details"); data.put("1", new Object[]{"ID", "NAME", "LASTNAME"}); data.put("2", new Object[]{1, "Pankaj", "Kumar"}); data.put("3", new Object[]{2, "Prakashni", "Yadav"}); data.put("4", new Object[]{3, "Ayan", "Mondal"}); data.put("5", new Object[]{4, "Virat", "kohli"}); int rownum = 0; for (String key : keyset) { Row row = sheet.createRow(rownum++); Object[] objArr = data.get(key); int cellnum = 0; for (Object obj : objArr) { Cell cell = row.createCell(cellnum++); if (obj instanceof String) cell.setCellValue((String) obj); else if (obj instanceof Integer) cell.setCellValue((Integer) obj); } } try { FileOutputStream out = new FileOutputStream(new File("gfgcontribute.xlsx")); workbook.write(out); out.close(); System.out.println("gfgcontribute.xlsx written successfully on disk."); } catch (Exception e) { e.printStackTrace(); } } } Đọc file excel

Để đọc một excel file chúng ta cũng có các bước sau:

Khởi tạo một workbook instance từ excel file.

Lấy sheet từ workbook.

Đọc từng dòng, mỗi dòng lấy giá trị từ từng cột.

import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.util.Iterator; public class Main { public static void main(String[] args) { try { FileInputStream file = new FileInputStream(new File("gfgcontribute.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSheet sheet = workbook.getSheetAt(0); while (rowIterator.hasNext()) { Row row = rowIterator.next(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "t"); break; } } System.out.println(""); } file.close(); } catch (Exception e) { e.printStackTrace(); } } }

Output:

IDtNAMEtLASTNAMEt1.0tPankajtKumart2.0tPrakashnitYadavt3.0tAyantMondalt4.0tVirattkohlit

Note: Nếu bạn muốn đọc một file tại một đường dẫn khác, thì bạn chỉ việc thay

FileInputStream file = new FileInputStream(new File("gfgcontribute.xlsx"));

thành đường dẫn bạn mong muốn.

Thêm dữ liệu vào sheet

Nếu bạn đã có một excel sẵn và muốn ghi thêm dự liệu vào đó, thì chỉ cần lấy sheet đó ra từ workbook, đi đến dòng cuối cùng và bắt đầu ghi thêm dữ liệu vào.

private static final String FILE_NAME = "C:\Users\pankaj\Desktop\projectOutput\blo.xlsx"; public static void write() throws IOException, InvalidFormatException { InputStream inp = new FileInputStream(FILE_NAME); Workbook wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt(0); int num = sheet.getLastRowNum(); Row row = sheet.createRow(++num); row.createCell(0).setCellValue("xyz"); ..... .. FileOutputStream fileOut = new FileOutputStream(FILE_NAME); wb.write(fileOut); fileOut.close(); }

Nguồn tham khảo

https://www.geeksforgeeks.org/reading-writing-data-excel-file-using-apache-poi/

Cập nhật thông tin chi tiết về Parse Word Document Using Apache Poi Example trên website Hoisinhvienqnam.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!