10/10/2018, 10:52

Code PHP - convert file EXCEL sang MySQL vấn đề nan giải

Hiện em đang làm một đề tài trong khuôn khổ chương trình sinh viên nghiên cứu khoa học của trường. Đây là một chương trình quản lí sinh viên của phòng Công Tác Học Sinh - Sinh Viên. Dữ liệu là một "đống" các files EXCEL. Yêu cầu xây dựng các chức năng quản lí, thổng kê, cập nhật... thông tin về sinh viên các lớp đào tạo tín chỉ thông qua các lớp niên chế (vì trường em mới chuyển sang hình thức học theo kiểu tín chỉ mà phòng CTHS-SV thì lại cần quản lí các lớp niên chế). Em gặp khó khăn trong việc chuyển từ Excel sang MySQL để import vào database. Em xem trên mạng thấy có hai cách làm
- Cách 1. Sử dụng phần mềm trung gian chuyển từ excel sang mysql
- Cách 2. Lưu file excel thành .csv rồi code (http://www.daniweb.com/forums/thread119197.html)

Nhưng em muốn người sử dụng chỉ việc import trực tiếp files excel vào chương trình của mình chứ không cần phải thay đổi gì file excel cả! Không biết có cách nào không? Rất mong các bác pro giúp đỡ.
hoangcn02 viết 13:04 ngày 10/10/2018
Được gửi bởi ductrong90
Nhưng em muốn người sử dụng chỉ việc import trực tiếp files excel vào chương trình của mình chứ không cần phải thay đổi gì file excel cả! Không biết có cách nào không? Rất mong các bác pro giúp đỡ.
Vậy thì tìm hiểu cách đọc file excel bằng php - rồi sau đó lưu vào csdl. Nhưng lưu ý là thường nhọc nhằn nếu file excel chứa dữ liệu có dấu tiếng Việt (!--)
hoanghon2005 viết 13:03 ngày 10/10/2018
Việc chuyển đổi dữ liệu từ excel sang MySql có nhiều cách, bạn thử làm cách này xem sao nhé lên google tìm chương trình Navicat 4.0 hoặc 8.0 bạn chỉ cần import file excel vào là được chỉ trong nháy mắt là xong cả cái trường đại học của bạn hì hì hì

Chúc thành công
adsviet viết 12:54 ngày 10/10/2018
Bạn giúp đỡ mình được chứ. Mình đã thử với Navicat nhưng không được. Đang nghiên cứu encode. Vì khả năng có hạn mà. Bạn nào giúp đỡ mình được về vấn đề này. Pm yahoo mình nhé
Yahoo: Keygoogle
Mình thấy dùng phần mềm và csv không ăn thua đâu. CSV not unicode...
s.code viết 13:01 ngày 10/10/2018
Sau một quá trình mình thử rất nhiều giải pháp khi làm việc trên file Excel trong PHP. Thì mình tìm ra được một thư viên ưng ý nhất.

Trước đây mình thử với nhiều bộ, có bộ chỉ đọc được file csv hay đọc file excel nhưng không phải dạng chuẩn như Office excel xuất ra. Có bộ thì đọc được file định dạng chuẩn nhưng ghi thì lại không được.

PHP-Excel toàn tập - giai dap
hoanghon2005 viết 13:03 ngày 10/10/2018
Được gửi bởi adsviet
Bạn giúp đỡ mình được chứ. Mình đã thử với Navicat nhưng không được. Đang nghiên cứu encode. Vì khả năng có hạn mà. Bạn nào giúp đỡ mình được về vấn đề này. Pm yahoo mình nhé
Yahoo: Keygoogle
Mình thấy dùng phần mềm và csv không ăn thua đâu. CSV not unicode...
Bạn đã chạy navicat rồi phải không bạn chỉ cần chọn chức năng import của nó rồi chọn file excel mà bạn có là ok mà

nếu không làm được thì add nick chát mình hướng dẫn cụ thể
ndphuong74 viết 12:57 ngày 10/10/2018
1/ Tạo Table trong CSDl (n trường: trường nào chứa unicode chọn Kiểu Varchar và mục Collation: chọn Utf8_general_ci).
2/ Biên tập file Excel (n cột: mỗi cột tương ứng một trường, m dòng: mỗi dòng tương ứng 1 record).
3/ Dùng Navicat connect database, import table / chọn file Excel / Chọn từng cột cho từng trường trong Table. Finish.
4/ Bây giờ thì bạn code php để select dữ liệu lên, nhớ thêm dòng: mysql_query('SET NAMES utf8 COLLATE utf8_general_ci');
trước câu lệnh SQL trong php.
Chúc bạn thành công!
hoanghon2005 viết 13:02 ngày 10/10/2018
Được gửi bởi ndphuong74
1/ Tạo Table trong CSDl (n trường: trường nào chứa unicode chọn Kiểu Varchar và mục Collation: chọn Utf8_general_ci).
2/ Biên tập file Excel (n cột: mỗi cột tương ứng một trường, m dòng: mỗi dòng tương ứng 1 record).
3/ Dùng Navicat connect database, import table / chọn file Excel / Chọn từng cột cho từng trường trong Table. Finish.
4/ Bây giờ thì bạn code php để select dữ liệu lên, nhớ thêm dòng: mysql_query('SET NAMES utf8 COLLATE utf8_general_ci');
trước câu lệnh SQL trong php.
Chúc bạn thành công!
Theo mình thì không nên tạo trước một table mà import thẳng bảng excel vào sau đó đổi lại tên, độ rộng, kiểu dữ liệu theo ý muốn. Vì khi tạo trước bảng trong MySql bạn import vào thường hay gặp lỗi bạn khó có thể ước lượng được độ rộng của từng trường mà dữ liệu trong file excel của bạn có thể chứa hết, hơn nữa còn một số định dạng như kiểu ngày tháng, kiểu số nữa chưa kể các ràng buộc và index nó sẽ bóa lỗi ỏm cả lên. Nói chung là rủi ro cao
haicop viết 13:05 ngày 10/10/2018
Mình thường save as Exel thành html rồi xử lý bằng PHP, đỡ bị lỗi font và lỗi linh tinh.
adsviet viết 13:07 ngày 10/10/2018
Những bài viết của các bạn rất hay. Mình đang nghiên cứu cái bạn s.code share. Nhưng vẫn chưa hiểu lắm.
Không biết bạn S.code có thể giúp đỡ mình không nhỉ ...
YM! Keygoogle
Skype: Nguoidaklak
Bài liên quan
0