Làm cách nào để trích xuất dữ liệu từ Excel bằng php?

Bạn có thể trích xuất các tệp csv dễ dàng hơn excel(. xls) bằng cách sử dụng php. Tôi nghĩ cách dễ dàng hơn để trích xuất dữ liệu từ tệp excel là lưu tệp dưới dạng csv, sau đó trích xuất và sử dụng dữ liệu theo nhu cầu của bạn

Đoạn mã sau minh họa việc trích xuất tệp csv 'test. csv‘ trong cùng thư mục. Hàm php fgetcsv($handle,$length,$separator) tìm nạp các trường theo từng hàng, trong đó

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
0 là tài nguyên tệp,
CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
1 là các ký tự giới hạn của các trường và
CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
2 phân tách các trường, ở đây “,” do các giá trị được phân tách bằng dấu phẩy (tệp csv)

<?php
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { //fetch fields row by row from csv 
$num = count($data);                                      //number of fields in each row
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";                              //prints each fields(data)
}
}
fclose($handle);
}
?>

Bây giờ bạn có thể thực hiện bất kỳ thao tác nào trên dữ liệu được trích xuất như chèn db, cập nhật, v.v.

Nếu bạn muốn tìm nạp dữ liệu trực tiếp từ Excel, hãy truy cập PHPExcel, Một dự án cung cấp tập hợp các lớp cho php, cho phép bạn ghi và đọc từ các định dạng tệp bảng tính khác nhau, như Excel (BIFF). xls, Excel 2007 (OfficeOpenXML). xlsx, CSV, Libre/OpenOffice Calc. ods, Gnumeric, PDF, HTML, …
Nhấp vào đây để truy cập Trang chủ PHPExcel

Chia sẻ cái này

  • Nhấp để chia sẻ trên Twitter (Mở trong cửa sổ mới)
  • Bấm để chia sẻ trên Facebook (Opens in new window)
  • Nhấp để chia sẻ trên LinkedIn (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Reddit (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Tumblr (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Pinterest (Mở trong cửa sổ mới)
  • Nhấp để chia sẻ trên Pocket (Mở trong cửa sổ mới)
  • Nhấp để gửi email liên kết cho bạn bè (Mở trong cửa sổ mới)

Như thế này

Thích Đang tải.

Có liên quan

trong trường hợp đó chúng ta nên sử dụng phương pháp được mô tả dưới đây. Trong PHP, chúng ta chỉ cần đặt thông tin tiêu đề để buộc trình duyệt khởi chạy cửa sổ tải xuống

Video hướng dẫn

Nếu bạn thấy thoải mái hơn khi xem video giải thích về Xuất dữ liệu sang Excel bằng PHP và MySQL, thì bạn nên xem video hướng dẫn này

Bạn cũng có thể xem hướng dẫn khác về Xuất dữ liệu bằng PHP,

  • Xuất dữ liệu sang Excel bằng PHP và MySQL
  • Xuất dữ liệu sang CSV và tải xuống bằng PHP và MySQL
  • Nhập tệp CSV vào MySql bằng PHP
  • Xuất dữ liệu bảng HTML sang Excel, CSV, PNG và PDF bằng Plugin jQuery
  • Xuất dữ liệu jQuery Datatable sang PDF, Excel, CSV và Copy

Xuất dữ liệu MySQL sang Excel trong PHP

Vì Excel là định dạng tốt nhất để lưu trữ dữ liệu trong tệp nên xuất dữ liệu ở định dạng Excel là một công cụ rất quan trọng cho phép người dùng lưu dữ liệu để sử dụng ngoại tuyến. Bạn sẽ học cách sử dụng PHP và MySQL để xuất dữ liệu sang Excel

Vì vậy, cấu trúc tệp cho ví dụ này là như sau

  • mục lục. php. Đây là tệp đầu vào
  • sự liên quan. php. File này dùng để kết nối MySQL với PHP
  • tạo_excel. 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

Hãy tạo một bảng nhiệm vụ chứa tất cả các bản ghi nhiệm vụ sẽ xuất sau này ở định dạng excel

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;

Bây giờ, tôi sẽ chèn một số dữ liệu mẫu vào bảng nhiệm vụ

INSERT INTO `tasks` (`id`, `Name`, `Status`, `Priority`, `Date`) VALUES
(1, 'Task1', 'Completed', 'Low', '2021-09-01'),
(2, 'Task2', 'InProgress', 'High', '2021-03-17'),
(3, 'Mysql', 'Hold', 'Low', '2021-09-22'),
(4, 'API', 'Pending', 'Low', '2021-09-06');

Tạo kết nối MySQL với PHP

Chúng tôi sẽ tạo một tệp

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
3 và thêm mã bên dưới. trong tệp này, Chúng tôi sẽ chuyển tên máy chủ cơ sở dữ liệu, tên người dùng cơ sở dữ liệu, mật khẩu cơ sở dữ liệu và tên cơ sở dữ liệu

<?php
Class dbObj{
	/* Database connection start */
	var $dbhost = "localhost";
	var $username = "root";
	var $password = "";
	var $dbname = "test";
	var $conn;
	function getConnstring() {
		$con = mysqli_connect($this->dbhost, $this->username, $this->password, $this->dbname) or die("Connection failed: " . mysqli_connect_error());

		/* check connection */
		if (mysqli_connect_errno()) {
			printf("Connect failed: %s\n", mysqli_connect_error());
			exit();
		} else {
			$this->conn = $con;
		}
		return $this->conn;
	}
}
?>

Lấy dữ liệu nhiệm vụ từ bảng cơ sở dữ liệu MySQL

Chúng tôi sẽ nhận các mục nhập từ các tác vụ của bảng cơ sở dữ liệu MySQL và đặt chúng vào một mảng để chúng tôi có thể hiển thị chúng và xuất chúng thành tệp excel. Đã thêm mã bên dưới vào đầu tệp

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
4

include_once("connection.php");
$db = new dbObj();
$connString =  $db->getConnstring();

$sql_query = "SELECT * FROM tasks";
$resultset = mysqli_query($connString, $sql_query) or die("database error:". mysqli_error($conn));
$tasks = array();
while( $rows = mysqli_fetch_assoc($resultset) ) {
	$tasks[] = $rows;
}

Xuất dữ liệu sang Excel

Tạo tính năng export bằng PHP và xuất dữ liệu ra excel. Chúng tôi cũng sẽ buộc trình duyệt tải xuống tệp thay vì hiển thị tệp. Chúng tôi sẽ thêm mã dưới đây vào tệp

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL,
  `Name` varchar(255) NOT NULL,
  `Status` varchar(255) NOT NULL,
  `Priority` varchar(255) NOT NULL,
  `Date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `tasks`
--
ALTER TABLE `tasks`
  ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for table `tasks`
--
ALTER TABLE `tasks`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;
4

if(isset($_POST["ExportType"]))
{
	 
    switch($_POST["ExportType"])
    {
        case "export-to-excel" :
            // Submission from
			$filename = "phpflow_data_export_".date('Ymd') . ".xls";		 
            header("Content-Type: application/vnd.ms-excel");
			header("Content-Disposition: attachment; filename=\"$filename\"");
			ExportFile($tasks);
			//$_POST["ExportType"] = '';
            exit();
        default :
            die("Unknown action : ".$_POST["action"]);
            break;
    }
}
function ExportFile($records) {
	$heading = false;
		if(!empty($records))
		  foreach($records as $row) {
			if(!$heading) {
			  // display field/column names as a first row
			  echo implode("\t", array_keys($row)) . "\n";
			  $heading = true;
			}
			echo implode("\t", array_values($row)) . "\n";
		  }
		exit;
}

mã hiển thị ở trên, Khối trường hợp chuyển đổi sẽ thực thi dựa trên giá trị tham số và phương thức được gọi.
Trình duyệt buộc phải tải xuống tệp excel.

Liên kết được Tài trợ

Tạo HTML và hiển thị bản ghi bằng nút xuất

Xác định bố cục html để hiển thị dữ liệu trong bảng và nút để thực hiện hành động

INSERT INTO `tasks` (`id`, `Name`, `Status`, `Priority`, `Date`) VALUES
(1, 'Task1', 'Completed', 'Low', '2021-09-01'),
(2, 'Task2', 'InProgress', 'High', '2021-03-17'),
(3, 'Mysql', 'Hold', 'Low', '2021-09-22'),
(4, 'API', 'Pending', 'Low', '2021-09-06');
0. Đã thêm mã bên dưới vào tệp
INSERT INTO `tasks` (`id`, `Name`, `Status`, `Priority`, `Date`) VALUES
(1, 'Task1', 'Completed', 'Low', '2021-09-01'),
(2, 'Task2', 'InProgress', 'High', '2021-03-17'),
(3, 'Mysql', 'Hold', 'Low', '2021-09-22'),
(4, 'API', 'Pending', 'Low', '2021-09-06');
1

________số 8

Chúng tôi đã nhập 'generate_excel. php’ ở đầu mã, tệp này sẽ mang lại dữ liệu tác vụ để hiển thị trong bảng HTML. Chúng tôi đã thiết lập danh sách thả xuống với tùy chọn 'xuất sang excel'. Tất cả dữ liệu tác vụ sẽ được hiển thị trong bảng HTML

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

Với tệp hợp lệ, biểu mẫu HTML gửi sẽ gọi PHP để xử lý phân tích cú pháp Excel. Trong PHP, thư viện PHPSpreadSheet được sử dụng để đọc dữ liệu tệp Excel và chuyển đổi nó thành một mảng. Bằng cách lặp lại dữ liệu mảng, mã sẽ thực thi cơ sở dữ liệu chèn từng hàng

Làm cách nào để lấy dữ liệu từ tệp xlsx trong php?