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

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

  • tập tin $. Đây là một tham số bắt buộc chỉ định tệp
  • trường $. Nó là một tham số bắt buộc chỉ định mảng nào sẽ lấy dữ liệu từ
  • dấu phân cách $. Nó là một tham số tùy chọn chỉ định dấu tách trường. Theo mặc định, hàm fputcsv[] sử dụng dấu phẩy
  • bao vây $. Đây là một tham số tùy chọn chỉ định ký tự bao vây trường. Theo mặc định, hàm fputcsv[] sử dụng

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ệ

  • Nếu một ký tự bao vây được chứa trong một trường, nó sẽ được thoát ra bằng cách nhân đôi nó, trừ khi nó được đặt ngay trước một escape_char
  • Kích hoạt tùy chọn cấu hình thời gian chạy auto_detect_line_endings có thể giúp giải quyết vấn đề PHP nhận dạng đúng các kết thúc dòng khi đọc tệp trên hoặc được tạo bởi máy tính Macintosh

Dưới đây là các chương trình minh họa hàm fputcsv[].
Chương trình 1.




Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
2

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
3

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
4
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
5
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
6
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
8
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
0

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
1
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
2
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
0

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
1____15
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
6

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
8

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
9
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
5
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
11
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
13
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
0
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
15
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
6

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
18

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
19

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
20
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7____24
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
23
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
24
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
25

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
26

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
27
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
28
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
9
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
0
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
32
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
7
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
34
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
0
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
24
Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
37

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ệu

Ví 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, Delhi
6

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, Delhi
7

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, Delhi
8

Đã 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, Delhi
9

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, Delhi
0

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 SQL

Nế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, Delhi
1

Đâ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 Excel

Khi 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, Delhi
2

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áng

Tậ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 CSV

Cá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, Delhi
3

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, Delhi
4

và đối với MySQL, đại loại như sau

Raj, Singh, Developer, Mumbai
Sameer, Pandey, Tester, Bangalore
Raghav, Chauhan, Manager, Delhi
5

7. Xuất sang CSV với Unicode nguyên vẹn

Nế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, Delhi
70

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ột

Tấ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, Delhi
71

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ự

Chủ Đề