2013-07-09 34 views
5

Tôi có một tệp hiện có (C: \ wb.xls) mà tôi muốn mở và thực hiện thay đổi. Làm thế nào trong Apachie POI để bạn mở một tập tin hiện có? Tất cả các tài liệu mà tôi tìm thấy phải đi với việc tạo một tập tin mới. Và nếu bạn biết, làm cách nào để chèn một hàng mới ở đầu tệp xls hoặc cách tự động định dạng độ rộng cột?Mở các xls hiện có trong Apache POI

+0

Xem hướng dẫn này có giúp: http://viralpatel.net/blogs/java-read-write-excel-file-apache-poi/ – cmbaxter

Trả lời

4

Bạn đã thử đọc số Apache POI HowTo "Reading or modifying an existing file" chưa? Điều đó sẽ bao gồm bạn ...

Về cơ bản, những gì bạn sẽ muốn làm là lấy từ QuickGuide ví dụ this for loading a File

Workbook wb = WorkbookFactory.create(new File("MyExcel.xls")); 
Sheet s = wb.getSheetAt(0); 

// Get the 11th row, creating if not there 
Row r1 = s.getRow(10); 
if (r1 == null) r1 = s.createRow(10); 

// Get the 3rd column, creating if not there 
Cell c2 = r1.getCell(2, Row.CREATE_NULL_AS_BLANK); 
// Set a string to be the value 
c2.setCellValue("Hello, I'm the cell C10!"); 

// Save 
FileOutputStream out = new FileOutputStream("New.xls"); 
wb.write(out); 
out.close(); 
14

Sử dụng một trong những điều sau

XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(xlFileAddress)); 

HOẶC

Workbook wb = WorkbookFactory.create(new File(xlFileAddress)); 

HOẶC

Workbook wb = WorkbookFactory.create(new FileInputStream(xlFileAddress)); 

và sau đó sử dụng wb để tạo/đọc/cập nhật trang tính/hàng/ô bất cứ điều gì bạn muốn. Để biết chi tiết, hãy truy cập here. Điều này chắc chắn sẽ giúp bạn.

+1

Lưu ý rằng [mở từ một 'InputStream' chậm hơn và đòi hỏi nhiều bộ nhớ hơn mở từ một tệp '', như được giải thích trong tài liệu POI] (http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream) – Gagravarr

+0

Lưu ý nếu sử dụng maven bạn cần phải có sự phụ thuộc của poi-ooxml chứ không phải không chỉ poi để sử dụng lớp WorkbookFactory. –

Các vấn đề liên quan