2010-10-23 46 views
6

Tôi cần xuất dữ liệu từ php sang Excel và có thể định dạng các mục khác nhau trong bảng tính excel.Xuất từ ​​PHP sang Excel

Cho đến nay, thư viện tốt nhất mà tôi đã tìm thấy là PHPExcel. Tuy nhiên, nó có vẻ rất nặng, và hơi chậm. Cấp, nó rất mạnh mẽ.

Có điều gì nhẹ hơn và nhanh hơn một chút, cho phép tôi xuất sang excel và có thể áp dụng định dạng đơn giản (in đậm, căn chỉnh, viền) không?

+3

Tôi đã trả lời câu hỏi này cách đây một tuần hoặc lâu hơn http://stackoverflow.com/questions/3930975/alternative-for-php-excel/3931142#3931142 –

Trả lời

4

Tôi vừa làm xong điều này ngày hôm qua. Sử dụng PHPExcel, tôi không gặp vấn đề gì khi đọc tài liệu "chính" với định dạng, viết 20-100 hàng nội dung và lưu tệp (tôi lưu nó vào màn hình "để tải xuống ngay lập tức. Trong khi một số người trên diễn đàn phàn nàn về tốc độ và chi phí, tôi đang đẩy rất nhiều dữ liệu theo cách của nó và nó không có bất kỳ vấn đề gì ở tất cả những gì nó quảng cáo.

Lưu ý rằng một nơi nào đó tôi đọc để làm kiểu dáng trong loạt như trái ngược với trong vòng khi có thể Ví dụ, kiểu a1: a50 trái ngược với style->a1, style->a2 trong một vòng lặp Rõ ràng, hai trường hợp khác nhau có những hàm ý rất khác nhau về bộ nhớ

Chỉ có một số lần xuất hiện và đọc các tệp Excel 2003. bạn đang làm việc hoàn toàn trong các tệp XLSX, nó sẽ hoạt động cũ actly như tài liệu.

+0

Chúng tôi luôn khuyên bạn nên áp dụng kiểu cho phạm vi thay vì lặp qua các ô riêng lẻ ... nó nhanh hơn và sử dụng ít bộ nhớ hơn, và tệp Excel được xuất ra nhỏ hơn vì các kiểu được chia sẻ. Một thủ thuật có ích khác là applyFromArray(), định nghĩa một tập hợp các tính năng kiểu (đậm, màu, màu nền, đường viền, vv) trong một mảng và sau đó áp dụng chúng vào các ô trong một cuộc gọi duy nhất thay vì thiết lập riêng từng phần tử. –

+0

Vâng, tôi chắc chắn thử định dạng thay vì thay vì các tế bào, nhưng phải trung thực, có thực sự là không có nhiều định dạng trong bảng này ở tất cả. Hiện tại, tôi đang xuất khoảng 1000 hàng và 6 cột, với một số định dạng phạm vi trên 3 hàng và 3 cột. Nó mất khoảng 6 giây (trong đó khoảng 1 giây là thời gian truy vấn) để chạy trên localhost của tôi, thường là một xấp xỉ khá về tốc độ của máy chủ. – JonoB

+0

@JonoB - Để ghi dữ liệu của bạn vào đối tượng PHPExcel, bạn đã xem phương thức fromArray() của PHPExcel_Worksheet thay vì thiết lập riêng từng giá trị của ô. Điều này có thể được sử dụng với một giá trị Binder để buộc datatyping chính xác của các giá trị tế bào để tăng tốc độ quá trình xây dựng bảng tính trong bộ nhớ. –