Python với Excel – Đọc và ghi dữ liệu giữa các files Excel
Xem bài viết [URL='www.giaiphapexcel.com/diendan/threads/python-v%E1%BB%9Bi-excel-m%E1%BB%9F-%C4%91%E1%BA%A7u-v%C3%A0-c%C3%A0i-%C4%91%E1%BA%B7t-th%C6%B0-vi%E1%BB%87n.142514/']Python với Excel – Mở đầu và cài đặt thư viện để cài đặt Python và thư viện cần thiết.
Mượn chủ đề này: [URL='www.giaiphapexcel.com/diendan/threads/l%E1%BB%97i-khi-l%E1%BA%A5y-d%E1%BB%AF-li%E1%BB%87u-b%E1%BA%B1ng-ado.142470/']Lỗi Khi lấy dữ liệu bằng ADO để viết xử lý bằng Python.
Mô tả: Cần lấy dữ liệu ở một file1 và ghi vào một file2 khác. Công việc lặp lại theo chu kỳ/ yêu cầu nào đó, dữ liệu mới ghi vào sẽ ghi nối tiếp vào phía dưới của file2.
Trong bài này có sử dụng module tkinter để mở cửa sổ cho phép chọn file Excel theo mong muốn..
from openpyxl import load_workbook
import tkinter as tk
from tkinter import filedialog
def select_excel_file(idex_title):
""" idex_title = 1 -> File cần lấy dữ liệu
idex_title = 2 -> File ghi dữ liệu vào """
titles = {1: "Chọn file cần lấy dữ liệu", 2: "Chọn file cần ghi dữ liệu vào"}
excel_filetypes = [('Excel files', '*.xls*'), ('All files', '*')]
root = tk.Tk()
root.withdraw()
file_path = ""
file_path = filedialog.askopenfilename(title = titles, filetypes = excel_filetypes)
return file_path
def Read_Write(start_row, last_column):
""" Lấy dữ liệu trong sheets(1) của excel_file1
rồi ghi (nối tiếp các lần lấy) vào file excel_file2
start_row = 8 # dòng đầu tiên cần lấy dữ liệu trong excel_file1
last_column = 18 # cột cuối cùng cần lấy dữ liệu trong excel_file1, mặc định lấy từ cột đầu tiên của bảng tính """
s_file = select_excel_file(1) # chọn file cần lấy dữ liệu
if len(s_file) > 0:
d_file = select_excel_file(2) # chọn file cần ghi dữ liệu vào
if len(d_file) > 0:
# load excel_file1
wb_1 = load_workbook(s_file)
ws_1 = wb_1.active
lastRow = len(ws_1)
if lastRow >= start_row:
# load excel_file2
wb_2 = load_workbook(d_file)
ws_2 = wb_2.active
# lấy và ghi dữ liệu
res = []
for i in range(start_row, lastRow + 1):
scode = (ws_1.cell(row = i, column = 2).value)
if scode is not None:
for k in range(1, last_column + 1):
value_ = ws_1.cell(row = i, column = k).value
res.append(value_)
ws_2.append(res)
res.clear()
# lưu file excel_file2
wb_2.save(d_file)
print("Done!")
""" thực hiện sao chép dữ liệu
start_row = 8
last_column = 18 """
Read_Write(8, 18)
Tải file dưới, giải nén và mở file read_write_data.py bằng IDLE của Python rồi nhấn F5..
(Đừng bất ngờ về tốc độ đọc và ghi dữ liệu).
2896
www.giaiphapexcel.com/diendan/threads/python-v%E1%BB%9Bi-excel-%C4%90%E1%BB%8Dc-v%C3%A0-ghi-d%E1%BB%AF-li%E1%BB%87u-gi%E1%BB%AFa-c%C3%A1c-files-excel.142516/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Cần tự đặt cho mình một cách đặt tên biến và theo sát nó.
Ở đây, tên biến chưa đồng chuẩn.
Đang dùng luật từ nối nhau bằng gạch dưới (s_file), tự dưng lọt vào kiểu lạc đà (lastRow).
Tôi nói là "tự đặt chuẩn cho mình", có bảo theo ai đâu?
Thống nhất từ đầu chí cuối là tiêu chuẩn của khoa học. Có ai đầu nói chuyện mét, đuôi nói chuyện yard rồi tự biện hộ "xứ tự do, tôi muón nói gì thì nói"?
Python có tự do đến mức nào cũng không thể phản khoa học và tự vỗ ngực "do tôi tôn trọng tự do"
========================
Chúng ta nên mở rộng cánh cửa "trái tim", luôn sẵn sàng tiếp nhận cái mới, cái hay (không nên bó buộc mặc định cái gì phải làm cái gì).
Cuối cùng cái ta nhận được nhiều hơn.. rồi hạnh phúc hoặc buồn chán hơn là ở chủ quan tự mỗi người. 😀 😀
——
Đơn giản như bài này:
http://www.giaiphapexcel.com/diendan/threads/ch%C3%A8n-c%E1%BB%99t-%C4%91%E1%BB%83-%C4%91%E1%BB%93ng-nh%E1%BA%A5t-c%C6%A1-s%E1%BB%9F-d%E1%BB%AF-li%E1%BB%87u.142036/
… cá rằng chủ thớt bài đó còn không rõ VBA là gì, nhưng hoàn toàn có thể làm theo hướng dẫn và giải quyết được vấn đề.
Mục đích cuối cùng là xong việc, còn con đường đi tới đích không cần quan tâm (trong trường hợp cụ thể này).