Fputcsv trong ví dụ php
Hàm fputcsv() trong PHP là một hàm sẵn có được sử dụng để định dạng một dòng dưới dạng tệp CSV (các giá trị được phân tách bằng dấu phẩy) và ghi nó vào một tệp đang mở. Tệp phải được đọc và các trường được gửi dưới dạng tham số cho hàm fputcsv() và nó trả về độ dài của chuỗi đã viết nếu thành công hoặc FALSE nếu thất bại Show cú pháp int fputcsv ( $file, $fields, $separator, $enclosure ) Thông số. Hàm fputcsv() trong PHP chấp nhận bốn tham số như được giải thích bên dưới
Giá trị trả về. Hàm này trả về độ dài của chuỗi đã viết nếu thành công hoặc FALSE nếu thất bại ngoại lệ
Dưới đây là các chương trình minh họa hàm fputcsv(). Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi2 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi3 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi4 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi5 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi6 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi8 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi0 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi1 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi2 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi0 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi1____15 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi6 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi8 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi9 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi5 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi11 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi13 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi0 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi15 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi6 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi18 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi19 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi20 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7____24 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi23 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi24 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi25 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi26 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi27 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi28 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi9 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi0 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi32 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi34 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi0 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi24 Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi37 Bài viết sau đây trình bày một phương pháp đơn giản để xuất bất kỳ dữ liệu nào từ PHP vào một bảng tính Excel 1. Chuẩn bị dữ liệuVí dụ sau đây sẽ tạo dữ liệu sử dụng cho công việc Sắp xếp Mảng của Mảng , được trình bày như sau Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi6 Ghi chú. Tiếp tục xuống trang này, bạn có thể tìm thấy ví dụ về cách tạo bản xuất từ truy vấn SQL Bước đầu tiên là xuất dữ liệu ở định dạng được phân định bằng tab (cũng có thể sử dụng CSV nhưng phức tạp hơn một chút). Để đạt được điều này, chúng tôi sử dụng đoạn mã sau Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi7 Chúng tôi đặt loại nội dung thành văn bản/đơn giản để có thể dễ dàng xem kết quả đầu ra trong trình duyệt. Mặt khác, vì không có định dạng HTML, đầu ra sẽ xuất hiện dưới dạng một dòng văn bản Dòng đầu tiên của đầu ra sẽ là tiêu đề cột (trong trường hợp này, tên trường được sử dụng). Các giá trị được phân tách bằng tab \t và các hàng có dấu ngắt dòng \n. Đầu ra sẽ trông giống như sau Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi8 Đã có một điểm yếu trong mã này có thể không rõ ràng ngay lập tức. Điều gì sẽ xảy ra nếu một trong các trường được xuất ra đã chứa một hoặc nhiều ký tự tab hoặc tệ hơn là một dòng mới? Giải pháp là 'thoát' các ký tự tab. Trong trường hợp này, chúng tôi sẽ thay thế các tab bằng chữ \tắt dòng bằng chữ \n để chúng không ảnh hưởng đến định dạng Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi9 Bây giờ, trước khi mỗi hàng được lặp lại, bất kỳ ký tự tab nào cũng được thay thế “\t” để các cột của chúng ta không bị chia nhỏ. Ngoài ra, mọi ngắt dòng trong dữ liệu đều được thay thế bằng “\n”. Bây giờ, làm thế nào để thiết lập cái này dưới dạng bản tải xuống… 2. Kích hoạt tải xuốngĐiều mà nhiều lập trình viên không nhận ra là bạn không cần phải tạo một tệp, thậm chí là tệp tạm thời, để một tệp được tải xuống. Nó đủ để 'bắt chước' tải xuống bằng cách chuyển các tiêu đề HTTP tương đương theo sau là dữ liệu Nếu chúng ta tạo một tệp PHP với đoạn mã sau thì khi nó được gọi, một tệp sẽ được tải xuống và có thể mở trực tiếp bằng Excel Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi0 Xin lưu ý rằng chúng tôi đã thêm một dòng bổ sung vào hàm cleanData để phát hiện dấu ngoặc kép và thoát khỏi bất kỳ giá trị nào chứa dấu ngoặc kép. Nếu không có điều này, số lượng trích dẫn không đồng đều trong một chuỗi có thể gây nhầm lẫn cho Excel » nhấp vào đây để kích hoạt tải xuống « Điều này sẽ dẫn đến một tệp được tải xuống và lưu vào máy tính của bạn. Nếu mọi việc suôn sẻ thì tên tệp sẽ được đặt tên là “website_data_20131002. xls” và sẽ mở trong Excel trông giống như thế này Làm thế nào nó hoạt động? . Dữ liệu sau đó được lặp lại, nhưng thay vì xuất hiện trên trang, nó sẽ trở thành tệp được tải xuống vì. xls và loại tệp ms-excel, hầu hết các máy tính sẽ liên kết nó với Excel và việc nhấp đúp sẽ mở chương trình đó. Bạn cũng có thể sửa đổi tên tệp và loại mime để chỉ ra gói bảng tính hoặc ứng dụng cơ sở dữ liệu khác Không có cách nào để chỉ định dữ liệu hoặc định dạng ô, độ rộng cột, v.v. khi sử dụng phương pháp này. Chúng tôi chỉ chuyển một tệp văn bản được phân định bằng tab. Để bao gồm định dạng, hãy thử tạo mã HTML hoặc tập lệnh thực sự tạo tệp Excel. Hoặc tạo macro của riêng bạn trong Excel áp dụng định dạng sau khi nhập Một kỹ thuật tương tự có thể được sử dụng để cho phép người dùng tải xuống các tệp đã được tải lên trước đó bằng PHP và được lưu trữ với các tên khác nhau. Thông tin thêm về điều đó sau… 3. Xuất từ cơ sở dữ liệu SQLNếu mục tiêu của bạn là cho phép xuất dữ liệu từ kết quả truy vấn thì các thay đổi tương đối đơn giản Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi1 Đây sẽ là toàn bộ tệp cần thiết để truy vấn cơ sở dữ liệu và kích hoạt tải xuống tệp. Các hàm cơ sở dữ liệu cần khớp với cơ sở dữ liệu bạn đang sử dụng. Ví dụ: người dùng MySQL sẽ cần sử dụng mysql_query và mysql_fetch_assoc hoặc mysqli_fetch_assoc thay cho các hàm PostgreSQL Đối với các cơ sở dữ liệu khác, hãy xem phần Nhận xét của người dùng bên dưới hoặc xem tài liệu PHP. Nếu bạn thấy các cột trùng lặp (được đánh số cũng như được gắn nhãn), bạn cần thay đổi lệnh gọi tìm nạp để chỉ trả về mảng kết hợp (ASSOC) Nếu bạn gặp sự cố ở giai đoạn này, hãy xóa tiêu đề Bố trí nội dung và thay đổi Loại nội dung trở lại văn bản/thuần túy. Điều này làm cho việc gỡ lỗi dễ dàng hơn rất nhiều vì bạn có thể thấy đầu ra trong trình duyệt của mình thay vì phải tải xuống và mở tệp được tạo mỗi khi bạn chỉnh sửa tập lệnh 4. Ngăn chặn định dạng tự động lố bịch của ExcelKhi nhập từ tệp văn bản như chúng ta đang thực hiện ở đây, Excel có thói quen khó chịu là xáo trộn ngày, dấu thời gian, số điện thoại và các giá trị đầu vào tương tự Đối với mục đích của chúng tôi, một số bổ sung đơn giản cho hàm cleanData sẽ giải quyết hầu hết các sự cố Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi2 Phần ngăn các giá trị bị xáo trộn thực hiện bằng cách chèn dấu nháy đơn ở đầu ô. Khi mở tệp kết quả trong Excel, bạn có thể thấy dấu nháy đơn, nhưng việc chỉnh sửa trường sẽ làm cho dấu nháy đơn biến mất trong khi vẫn giữ nguyên định dạng chuỗi. Excel là lạ theo cách đó Các loại giá trị được thoát theo cách này là. các giá trị bắt đầu bằng số không; . Các biểu thức chính quy có liên quan đã được đánh dấu trong đoạn mã trên 5. Định dạng – màu sắc, số, ngày thángTập lệnh này tạo và kích hoạt tải xuống tệp văn bản bằng Loại Mime Excel. Chúng tôi không xây dựng tệp bảng tính Excel thực tế Không thể xác định kiểu dáng, màu sắc, độ rộng cột, v.v. bằng kỹ thuật này. Bạn có thể tạo một bảng HTML với một số dữ liệu được định dạng mà Excel sẽ nhận ra, nếu không, bạn cần một tập lệnh phức tạp hơn nhiều 6. Xuất sang định dạng CSVCác phiên bản Excel mới hơn đang trở nên cầu kỳ trong việc mở tệp bằng. xls không phải là tệp nhị phân Excel, tạo định dạng CSV bằng. tiện ích mở rộng csv một tùy chọn tốt hơn Các tùy chọn văn bản được phân định bằng tab mô tả ở trên có thể hơi hạn chế nếu dữ liệu của bạn chứa các dòng mới hoặc dấu ngắt tab mà bạn muốn giữ nguyên khi mở trong Excel hoặc ứng dụng bảng tính khác Sau đó, một định dạng tốt hơn là các biến được phân tách bằng dấu phẩy (CSV) có thể được tạo như sau Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi3 Thông thường, lệnh fputcsv được dùng để ghi dữ liệu ở định dạng CSV vào một tệp riêng. Trong tập lệnh này, chúng tôi đang lừa nó ghi trực tiếp vào trang bằng cách yêu cầu nó ghi vào php. // đầu ra thay vì tệp thông thường. Một mẹo hay Bên cạnh đó, để xuất trực tiếp sang định dạng CSV từ giao diện dòng lệnh trong PostgreSQL, bạn có thể sử dụng một cách đơn giản Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi4 và đối với MySQL, đại loại như sau Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi5 7. Xuất sang CSV với Unicode nguyên vẹnNếu giống như chúng tôi, dữ liệu của bạn chứa các ký tự UTF-8, bạn sẽ nhận thấy rằng Excel không xử lý chúng tốt lắm. Các ứng dụng khác có thể mở nội dung UTF-8 mà không gặp sự cố, nhưng vì lý do nào đó, Microsoft muốn giữ bạn trong thời kỳ đen tối May mắn thay, có một mẹo bạn có thể sử dụng. Dưới đây, bạn có thể thấy cách chúng tôi sửa đổi tập lệnh để chuyển đổi mọi thứ từ định dạng UTF-8 sang UTF-16 Lower Endian (UTF-16LE) mà Excel, ít nhất là trên Windows, sẽ nhận ra Khi mở tệp này trong Excel, bạn có thể thấy tất cả dữ liệu được nhóm vào cột đầu tiên. Điều này có thể sửa được bằng cách sử dụng lệnh “Chuyển văn bản thành cột…” trong menu Dữ liệu Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi70 Tập lệnh này có thể không hoạt động đối với tất cả các phiên bản Excel. Vui lòng cho chúng tôi biết bằng cách sử dụng biểu mẫu Phản hồi bên dưới nếu bạn gặp sự cố hoặc đưa ra giải pháp tốt hơn 8. Chỉ định tiêu đề cộtTất cả các ví dụ tải xuống cơ sở dữ liệu ở trên đều sử dụng tên trường cơ sở dữ liệu cho hàng đầu tiên của tệp đã xuất, đây có thể không phải là thứ bạn muốn. Nếu bạn muốn chỉ định các tiêu đề thân thiện với người dùng hơn của riêng mình, bạn có thể sửa đổi mã như sau Raj, Singh, Developer, Mumbai Sameer, Pandey, Tester, Bangalore Raghav, Chauhan, Manager, Delhi71 Các giá trị trong hàng đầu tiên sẽ được ánh xạ theo mảng liên kết $colnames. Nếu không có ánh xạ nào được cung cấp cho một tên trường, nó sẽ không thay đổi. Tất nhiên bạn sẽ muốn cung cấp danh sách các tiêu đề phù hợp của riêng mình. Họ không cần phải theo thứ tự |