Làm cách nào tôi có thể xuất dữ liệu từ nhiều trang tính Excel trong PHP?

Thứ nhất, vòng lặp bên dưới không hoạt động như mong đợi, tôi không thể xuất thành nhiều tệp excel. Nó xuất và ghi vào cùng một tệp

 

Thứ hai, sau khi xuất, tôi gặp lỗi bên dưới trong tệp. Yêu cầu của tôi là xuất dữ liệu sang một tệp excel riêng trên mỗi lần lặp của vòng lặp. Vì vậy, ai đó có thể giúp tôi với những vấn đề này không. Tôi không thể tìm ra vấn đề ở đâu

if(isset($_GET['groupname'], $_GET['decks'], $_GET['rows'])) { $groupname = $_GET['groupname']; $decks = $_GET['decks']; $rows = $_GET['rows']; $pickdeckrows = $rows/$decks; for($i=1; $i<=$decks; $i++){ $stmt = $dbconnect->prepare("SELECT v.decknumber, v.vtext FROM decks v WHERE v.groupname =:groupname LIMIT :pickdeckrows"); $stmt -> bindValue(':groupname', $groupname); $stmt -> bindValue(':pickdeckrows', $pickdeckrows); $stmt -> execute(); ob_end_clean(); $output = ' <table class="table" bordered="1"> <tr> <th>GroupId</th> <th>VignetteText</th> </tr> '; while($row = $stmt -> fetch()) { $output .= ' <tr> <td>'.$row["decknumber"].'</td> <td>'.$row["vtext"].'</td> </tr> '; } $output .= '</table>'; header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename='.$groupname.'deck'.$i.'.xls'); echo $output; } } else { echo "Not set!!!"; }

lỗi

 

1. Lưu ý. ob_end_clean(). không thể xóa bộ đệm. Không có bộ đệm để xóa

2. Cảnh báo. Không thể sửa đổi thông tin tiêu đề - tiêu đề đã được gửi bởi (tiêu đề đầu tiên)

3. Cảnh báo. Không thể sửa đổi thông tin tiêu đề - tiêu đề đã được gửi bởi (tiêu đề thứ hai)

 

Cảm ơn

 

 

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Jacques1

Đăng ngày 3 tháng 9 năm 2017

Jacques1

  • Các thành viên
    • 4. 2k
    • 189

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Bạn dường như không hiểu cách thức hoạt động của HTTP

 

Bạn có thể gửi một phản hồi bằng một tệp duy nhất*. Nếu bạn muốn người dùng tải xuống nhiều tệp, bạn phải đặt chúng vào kho lưu trữ hoặc hiển thị trang nơi có thể tải xuống từng tệp một

 

 

 

* Về lý thuyết, có nhiều thông điệp, nhưng tôi sẽ tránh xa những thử nghiệm đó

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Jacques1

Đăng ngày 3 tháng 9 năm 2017

Jacques1

  • Các thành viên
    • 4. 2k
    • 189

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Thành thật mà nói, tôi không biết bạn đang làm gì ở đó. Bạn chạy đi chạy lại cùng một truy vấn, mỗi lần bạn tạo cùng một bảng HTML, sau đó bạn cố giả vờ rằng bảng HTML này là một bảng tính Excel

 

Bạn mong đợi gì từ điều này ngoài một tập hợp các tệp giống hệt nhau, tất cả đều chứa nội dung vô nghĩa?

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

sắc thái

Đăng ngày 3 tháng 9 năm 2017

sắc thái

  • Các thành viên
    • 40

  • Tác giả

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Thành thật mà nói, tôi không biết bạn đang làm gì ở đó. Bạn chạy đi chạy lại cùng một truy vấn, mỗi lần bạn tạo cùng một bảng HTML, sau đó bạn cố giả vờ rằng bảng HTML này là một bảng tính Excel

 

Bạn mong đợi gì từ điều này ngoài một tập hợp các tệp giống hệt nhau, tất cả đều chứa nội dung vô nghĩa?

 

Trên thực tế, tôi đã không bao gồm mã để xóa các hàng được xuất. Dưới đây là mã mà tôi đã thử và nó hoạt động tốt khi xuất một lần. Nhưng tôi muốn xuất nó cho đến khi vòng lặp kết thúc

if(isset($_GET['tên nhóm'], $_GET['bộ bài'], $_GET['hàng']))

{

 

$groupname = $_GET['groupname'];

$boong = $_GET['boong'];

$rows = $_GET['rows'];

$pickdeckrows = $rows/$decks;

 

//  for($i=1; $iprepare("CHỌN v. số boong, v. vtext  TỪ sàn v WHERE  v. tên nhóm =. tên nhóm GIỚI HẠN. cuốc chim");

$stmt -> bindValue('. tên nhóm', $tên nhóm);

$stmt -> bindValue('. pickdeckrows', $pickdeckrows);

$stmt -> thực thi();

 

ob_end_clean();

 

đầu ra $ = '

ID nhóm

Văn bản

       

';

while($row = $stmt -> tìm nạp())

{

đầu ra $. = '

'. $row["số boong"]. '

'. $row["vtext"]. '

       

';

}

đầu ra $. = '';

tiêu đề ('Loại nội dung. đơn/đồng. MS Excel');

tiêu đề ('Bố trí nội dung. tập tin đính kèm; . $groupname. 'boong. xls');

tiếng vang $ đầu ra;

 

$stmtdelete = $dbconnect->prepare("XÓA  TỪ sàn Ở ĐÂU  tên nhóm =. tên nhóm GIỚI HẠN. cuốc chim");

$stmtdelete -> bindValue('. tên nhóm', $tên nhóm);

$stmtdelete -> bindValue('. pickdeckrows', $pickdeckrows);

$stmtdelete -> thực thi();

 

// }

}

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Jacques1

Đăng ngày 3 tháng 9 năm 2017

Jacques1

  • Các thành viên
    • 4. 2k
    • 189

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017 (đã chỉnh sửa)

Đọc câu trả lời. Và, không, điều này không ổn. Một số ứng dụng có thể đủ thông minh để nhận ra rằng bảng HTML giả làm bảng tính của bạn thực ra là một bảng HTML nên được nhập, nhưng điều đó không thay đổi được thực tế là khai báo kiểu là vô nghĩa và dẫn đến lỗi bất cứ lúc nào

 

Nếu bạn muốn có một bảng tính, thì hãy phục vụ một bảng tính. Có một số thư viện có thể tạo tệp hợp lệ. Nhưng sau đó một lần nữa. Đọc câu trả lời

Đã chỉnh sửa ngày 3 tháng 9 năm 2017 bởi Jacques1

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

sắc thái

Đăng ngày 3 tháng 9 năm 2017

sắc thái

  • Các thành viên
    • 40

  • Tác giả

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Đọc câu trả lời. Và, không, điều này không ổn. Một số ứng dụng có thể đủ thông minh để nhận ra rằng bảng HTML giả làm bảng tính của bạn thực ra là một bảng HTML nên được nhập, nhưng điều đó không thay đổi được thực tế là khai báo kiểu là vô nghĩa và dẫn đến lỗi bất cứ lúc nào

 

Nếu bạn muốn có một bảng tính, thì hãy phục vụ một bảng tính. Có một số thư viện có thể tạo tệp hợp lệ. Nhưng sau đó một lần nữa. Đọc câu trả lời

 

Được rồi, tôi hiểu ý của bạn. Tôi thấy tệp excel của tôi có dữ liệu nhưng nó chỉ kết xuất Bảng HTML và không ở định dạng bảng tính. Tôi thấy có Thư viện PHP Excel. Tôi sẽ sử dụng nó nhưng một lần nữa yêu cầu của tôi là tạo nhiều tệp excel và người dùng không thể thực hiện thủ công vì sẽ có hơn 10 tệp excel và họ muốn nó được tạo tự động

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

Jacques1

Đăng ngày 3 tháng 9 năm 2017

Jacques1

  • Các thành viên
    • 4. 2k
    • 189

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Tôi đã nói là có hai lựa chọn. Hai. Nếu bạn không muốn người dùng tải các tệp xuống một cách riêng biệt, thì hãy sử dụng một kho lưu trữ ( . zip , . hắc ín. gz , sao cũng được).

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

  • Dung dịch

đá

Đăng ngày 3 tháng 9 năm 2017

đá

  • guru
    • 4. 3k
    • 93
  • Địa điểm. Bonita, Florida
  • Lứa tuổi. 36

  • Dung dịch

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Đối với việc tạo các tệp "excel", nếu bạn không cần bất kỳ tính năng ưa thích nào như nhiều trang tính, định dạng, v.v. thì tôi thường thấy việc tạo tệp CSV là dễ nhất. Loại tệp thường được ánh xạ tới chương trình bảng tính của người dùng (có thể là excel, open office, bất cứ thứ gì) và dễ dàng tạo/kiểm tra

 

<?php if(isset($_GET['groupname'], $_GET['decks'], $_GET['rows'])){ $groupname = $_GET['groupname']; $decks = $_GET['decks']; $rows = $_GET['rows']; $pickdeckrows = $rows/$decks; //for($i=1; $i<=$decks; $i++){ $stmt = $dbconnect->prepare("SELECT v.decknumber, v.vtext FROM decks v WHERE v.groupname =:groupname LIMIT :pickdeckrows"); $stmt->bindValue(':groupname', $groupname); $stmt->bindValue(':pickdeckrows', $pickdeckrows); $stmt->execute(); ob_end_clean(); $output = fopen('php://memory', 'w+'); $length = fputcsv($output, [ 'GroupId' , 'Text' ]); while($row = $stmt -> fetch()){ $length += fputcsv($output, [ $row["decknumber"] , $row["vtext"] ]); } header('Content-Type: text/csv'); header('Content-length: '.$length); header('Content-Disposition: attachment; filename='.$groupname.'deck.csv'); rewind($output); fpassthru($output); fclose($output); $stmtdelete = $dbconnect->prepare("DELETE FROM decks WHERE groupname =:groupname LIMIT :pickdeckrows"); $stmtdelete -> bindValue(':groupname', $groupname); $stmtdelete -> bindValue(':pickdeckrows', $pickdeckrows); $stmtdelete -> execute(); //} } Và như đã đề cập, nếu bạn cần cung cấp nhiều tệp trong một yêu cầu, hãy đóng gói chúng vào một kho lưu trữ. sau đó phục vụ tập tin đó

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

sắc thái

Đăng ngày 3 tháng 9 năm 2017

sắc thái

  • Các thành viên
    • 40

  • Tác giả

    • Chia sẻ

Đăng ngày 3 tháng 9 năm 2017

Đối với việc tạo các tệp "excel", nếu bạn không cần bất kỳ tính năng ưa thích nào như nhiều trang tính, định dạng, v.v. thì tôi thường thấy việc tạo tệp CSV là dễ nhất. Loại tệp thường được ánh xạ tới chương trình bảng tính của người dùng (có thể là excel, open office, bất cứ thứ gì) và dễ dàng tạo/kiểm tra

 

<?php if(isset($_GET['groupname'], $_GET['decks'], $_GET['rows'])){ $groupname = $_GET['groupname']; $decks = $_GET['decks']; $rows = $_GET['rows']; $pickdeckrows = $rows/$decks; //for($i=1; $i<=$decks; $i++){ $stmt = $dbconnect->prepare("SELECT v.decknumber, v.vtext FROM decks v WHERE v.groupname =:groupname LIMIT :pickdeckrows"); $stmt->bindValue(':groupname', $groupname); $stmt->bindValue(':pickdeckrows', $pickdeckrows); $stmt->execute(); ob_end_clean(); $output = fopen('php://memory', 'w+'); $length = fputcsv($output, [ 'GroupId' , 'Text' ]); while($row = $stmt -> fetch()){ $length += fputcsv($output, [ $row["decknumber"] , $row["vtext"] ]); } header('Content-Type: text/csv'); header('Content-length: '.$length); header('Content-Disposition: attachment; filename='.$groupname.'deck.csv'); rewind($output); fpassthru($output); fclose($output); $stmtdelete = $dbconnect->prepare("DELETE FROM decks WHERE groupname =:groupname LIMIT :pickdeckrows"); $stmtdelete -> bindValue(':groupname', $groupname); $stmtdelete -> bindValue(':pickdeckrows', $pickdeckrows); $stmtdelete -> execute(); //} } Và như đã đề cập, nếu bạn cần cung cấp nhiều tệp trong một yêu cầu, hãy đóng gói chúng vào một kho lưu trữ. sau đó phục vụ tập tin đó

 

 

Cảm ơn đã cung cấp thông tin. Có, tôi thực sự không cần định dạng và nhiều trang tính. Tôi phát hiện ra rằng ứng dụng chỉ có thể hỗ trợ định dạng tệp CSV

 

Yêu cầu chính không chỉ là xuất thành nhiều tệp. Người dùng sau đó chọn một trong các tệp được tạo vào ứng dụng của họ. Vì vậy, nếu tôi tạo nó thành một kho lưu trữ thì một lần nữa tôi phải giải nén và cung cấp cho họ để lựa chọn. Vì vậy, bạn có thể vui lòng cho tôi biết nếu đây là cách duy nhất tôi có thể làm điều đó?

 

Cảm ơn

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

sắc thái

Đăng ngày 4 tháng 9 năm 2017

sắc thái

  • Các thành viên
    • 40

  • Tác giả

    • Chia sẻ

Đăng ngày 4 tháng 9 năm 2017

Đối với việc tạo các tệp "excel", nếu bạn không cần bất kỳ tính năng ưa thích nào như nhiều trang tính, định dạng, v.v. thì tôi thường thấy việc tạo tệp CSV là dễ nhất. Loại tệp thường được ánh xạ tới chương trình bảng tính của người dùng (có thể là excel, open office, bất cứ thứ gì) và dễ dàng tạo/kiểm tra

 

<?php if(isset($_GET['groupname'], $_GET['decks'], $_GET['rows'])){ $groupname = $_GET['groupname']; $decks = $_GET['decks']; $rows = $_GET['rows']; $pickdeckrows = $rows/$decks; //for($i=1; $i<=$decks; $i++){ $stmt = $dbconnect->prepare("SELECT v.decknumber, v.vtext FROM decks v WHERE v.groupname =:groupname LIMIT :pickdeckrows"); $stmt->bindValue(':groupname', $groupname); $stmt->bindValue(':pickdeckrows', $pickdeckrows); $stmt->execute(); ob_end_clean(); $output = fopen('php://memory', 'w+'); $length = fputcsv($output, [ 'GroupId' , 'Text' ]); while($row = $stmt -> fetch()){ $length += fputcsv($output, [ $row["decknumber"] , $row["vtext"] ]); } header('Content-Type: text/csv'); header('Content-length: '.$length); header('Content-Disposition: attachment; filename='.$groupname.'deck.csv'); rewind($output); fpassthru($output); fclose($output); $stmtdelete = $dbconnect->prepare("DELETE FROM decks WHERE groupname =:groupname LIMIT :pickdeckrows"); $stmtdelete -> bindValue(':groupname', $groupname); $stmtdelete -> bindValue(':pickdeckrows', $pickdeckrows); $stmtdelete -> execute(); //} } Và như đã đề cập, nếu bạn cần cung cấp nhiều tệp trong một yêu cầu, hãy đóng gói chúng vào một kho lưu trữ. sau đó phục vụ tập tin đó

 

 

Sử dụng giải pháp của bạn, khi tôi xuất, nó đang xuất dưới dạng chỉ mục. php chứ không phải dưới dạng tệp csv. Tại sao vậy ??

  • Trích dẫn

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

sắc thái

Đăng ngày 5 tháng 9 năm 2017

sắc thái

  • Các thành viên
    • 40

  • Tác giả

    • Chia sẻ

Đăng ngày 5 tháng 9 năm 2017

Được chứ. Được hiểu là trang xuất của tôi là một phần của trang Chỉ mục của tôi, nội dung của trang chỉ mục đã bị hủy. Vì vậy, để giải quyết vấn đề này, tôi đã chỉ bản xuất của mình sang một trang độc lập và hiện tại quá trình tải xuống csv đang hoạt động hoàn hảo

 

Tôi cũng đã đọc từ một diễn đàn khác rằng "Tôi không thể  nhổ nhiều tệp cùng lúc để tải xuống. Đó là hạn chế của giao thức http và PHP không thể giải quyết vấn đề đó trừ khi tôi lưu nhiều tệp vào đĩa, sau đó nén chúng và cung cấp tệp zip HOẶC sử dụng một loạt chuyển hướng tiêu đề để lấy các tệp theo thứ tự tuần tự. "

 

Vì vậy, tôi đoán rằng tôi không có lựa chọn nào khác ngoài việc nén tất cả các tệp và sau đó có thể giải nén và cung cấp cho người dùng

Làm cách nào để tạo tài liệu Excel có nhiều trang tính từ php?

php, trong tệp này đầu tiên chúng tôi thực hiện kết nối cơ sở dữ liệu và lấy dữ liệu từ bảng khách hàng và hiển thị trên trang web. Sau đó, chúng tôi đã tạo biểu mẫu với tùy chọn chọn đầu vào để chọn số lượng bản ghi bạn muốn xuất trong một tệp Excel và bên dưới, bạn có thể tìm thấy nút gửi

Làm cách nào để tạo nhiều trang tính trong CSV bằng php?

Không, bạn không thể sử dụng nhiều trang tính với CSV . Bạn phải sử dụng một phần mở rộng PHP hoàn toàn khác, phần mở rộng này sẽ không tạo ra một. tệp csv, nhưng một. xls hoặc.

Làm cách nào để xuất dữ liệu từ Excel sang php?

php. Đây là tệp PHP chính sẽ có phương thức xuất để xuất dữ liệu sang excel. .
Tạo bảng cơ sở dữ liệu MySQL. .
Tạo kết nối MySQL với PHP. .
Lấy dữ liệu nhiệm vụ từ bảng cơ sở dữ liệu MySQL. .
Xuất dữ liệu sang Excel. .
Tạo HTML và hiển thị bản ghi bằng nút xuất. .
Gửi biểu mẫu bằng jQuery. .
Kết quả

Chủ đề