2013-11-25 17 views
11

Tôi đang cố gắng tạo ra một excel lớn năm 2010 với 30 cột và 1 triệu bản ghi với Apache poi mới nhất. Tôi đang tạo mô tả trong liên kết này http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java. nhưng tôi muốn chiều rộng cột giống với kích thước văn bản tiêu đề cột. nhưng khi tôi làm điều này sau khi tạo excel với mã sau đâyapache poi excel chiều rộng cột tự động lớn

for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) { 
      sheet.setColumnWidth(x, 20*256); 
     } 

đang mất một thời gian rất lớn và thậm chí với kích thước heap 5gb Tôi đang hết bộ nhớ.

nhờ

ram

+0

Tại sao bạn không sử dụng SXSSF? Đó là sự thay thế mới cho các công cụ demo BigGrid – Gagravarr

+0

có, thấy SXSSF sẽ sử dụng trong dự án tương lai ..... đến để biết sau –

+0

đang đối mặt với cùng một vấn đề! bạn đã làm gì cuối cùng? –

Trả lời

29

Đầu Chọn hàng đầu tiên hoặc tiêu đề bởi vì chỉ có Tiêu đề có thể cung cấp cho bạn số lượng tối đa của các tế bào trong một hàng.

HSSFRow row = wb.getSheetAt(0).getRow(0); 

Sau đó sử dụng autoSizeColumn trên mỗi cột rằng hàng

for(int colNum = 0; colNum<row.getLastCellNum();colNum++) 
    wb.getSheetAt(0).autoSizeColumn(colNum); 

này sẽ thiết lập độ rộng cột giống như của chiều rộng header của nó.

4

Tôi cũng khuyên bạn nên xem xét sử dụng sxssf. Nó sử dụng một định dạng xml để tải nó vào Excel. Điều này là nhanh hơn nhiều và một cách tốt hơn để tạo ra các báo cáo lớn hoặc lưới. Chức năng tự động hóa trong xssf mất quá nhiều thời gian theo mặc định.

3

sheet.autoSizeColumn (columnNumber) hoạt động. điều này sẽ đổi kích thước cột thành độ dài ô lớn nhất.

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