Gấu trúc đóng tệp excel

Nếu bạn đang cố gắng sử dụng gấu trúc để đọc tệp excel được mã hóa mật khẩu và nhận được thông báo sau

xlrd.biffh.XLRDError: Can't find workbook in OLE2 compound document

Sau đó, bạn đã đến đúng nơi. Thông báo này có nghĩa là chúng tôi đang cố gắng đọc một tệp được mã hóa mật khẩu mà không cung cấp mật khẩu. Trong hướng dẫn rút ngắn này, tôi sẽ chỉ cho bạn cách đọc tệp Excel được mã hóa bằng mật khẩu vào xuất cấu trúc

Thư viện

Giải pháp tốt nhất mà tôi đã tìm thấy cho đến nay là thư viện MSOFFCRYPTO. Mặc dù tên của nó, thư viện này không liên quan gì đến tiền điện tử thư viện tiền điện tử. Mặc dù tên của nó, thư viện này không liên quan gì đến tiền điện tử…

Chúng tôi sẽ sử dụng PIP để cài đặt nó, lưu tên cài đặt msoffcrypto-tool. msoffcrypto-công cụ

pip install msoffcrypto-tool

Đọc tệp excel được mã hóa trực tiếp vào gấu trúc

Thư viện MSOFFCRYPTO có phương thức load_key [] để chuẩn bị mật khẩu cho tệp excel. Sau đó, phương thức giải mã [] mở tệp khóa và lưu nó vào đĩa. thư viện msoffcrypto có phương thức load_key[] để chuẩn bị mật khẩu cho tệp Excel. Sau đó, phương thức decrypt[] mở khóa tệp và lưu tệp vào đĩa .

Vì chúng tôi muốn đọc tệp excel được mã hóa trực tiếp vào gấu trúc nên việc lưu vào đĩa sẽ không hiệu quả. Làm như vậy, chúng ta có thể ghi nội dung tệp tạm thời vào bộ đệm trong bộ nhớ [RAM]. Để làm điều này, chúng tôi sẽ cần sử dụng thư viện IO. thư viện io

import msoffcrypto
import io
import pandas as pd

temp = io.BytesIO[]

IO. Bytesio [] cho phép viết nội dung cho buff trong bộ nhớ [RAM]. Điều này giúp xử lý tệp nhanh hơn nhiều so với ghi vào đĩa. io. BytesIO[] cho phép ghi nội dung vào bộ đệm trong bộ nhớ [RAM]. Điều này giúp xử lý tệp nhanh hơn nhiều so với ghi vào đĩa

Đọc tệp excel bằng khung cấu trúc

Set it back with nhau

Ở đây bạn có nó, một tập lệnh ngắn và ngọt ngào để đọc các tệp excel được mã hóa trực tiếp vào gấu trúc, lưu ý chúng tôi chưa sửa đổi tệp excel gốc cũng như không tạo các tệp không cần thiết trên đĩa trong quá

import msoffcrypto
import io
import pandas as pd

temp = io.BytesIO[]

with open['secret.xlsx', 'rb'] as f:
    excel = msoffcrypto.OfficeFile[f]
    excel.load_key['1234']
    excel.decrypt[temp]

df = pd.read_excel[temp]
del temp

Làm cách nào để sao lưu tệp Excel được bảo vệ bằng mật khẩu?

Làm thế nào để không được bảo vệ bảng excel bằng mật khẩu. .

Chuột phải vào tab tờ và chọn bảng không được bảo vệ từ menu ngữ cảnh

Trên tab Đánh giá, trong nhóm thay đổi, nhấp vào bảng không được bảo vệ

Trên tab Trang chủ, trong ô nhóm, nhấp vào định dạng và chọn bảng không được bảo vệ từ menu thả xuống

Pandas can read an open excel file?

Đọc một tập tin Excel vào một bản dữ liệu cấu trúc. Hỗ trợ đọc XLS, XLSX, XLSM, XLSB, ODF, ODF và Tệp ODT từ hệ thống tệp hoặc URL cục bộ. Hỗ trợ một tùy chọn để đọc một tờ giấy hoặc một danh sách các tờ giấy

Trong phần này, tôi sẽ trình bày cách sử dụng thư viện Pandas với Excel. Chúng tôi sẽ sử dụng các thao tác bảng excel cơ bản như tạo trang tính mới, thêm chuỗi dữ liệu, kết nối thêm dữ liệu, đọc dữ liệu, định dạng dữ liệu và thêm biểu đồ

Nội dung chính Hiển thị

  • Truy cập XlsxWriter từ Pandas
  • Thêm biểu tượng vào đầu Dataframe
  • Định dạng đầu ra Dataframe
  • Thêm một khung dữ liệu vào bảng trang tính
  • Thêm bộ lọc tự động vào đầu Dataframe
  • Xử lý nhiều Pandas Dataframes
  • Chuyển các tùy chọn chức năng tạo XlsxWriter cho Pandas
  • Chúng tôi có thể chỉnh sửa tệp Excel bằng Python không?
  • Chúng ta có thể đọc tệp Excel trong gấu trúc không?

Cài đặt

Thực hiện các lệnh sau để cài đặt các thư viện Pandas, xlsxwriter, xlrd và openpyxl

pip install pandaspip install xlsxwriterpip install xlrdpip install openpyxl

Tạo bảng tính Excel

import pandas as pdwriter = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']writer.close[]

Mã này sẽ tạo một tệp

import pandas as pd

# dataframe Name and Age columns
df = pd.DataFrame[{'Name': ['A', 'B', 'C', 'D'],
'Age': [10, 0, 30, 50]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1', index=False]

# Close the Pandas Excel writer and output the Excel file.
writer.close[]
6 mới với trang tính mặc định có tên là
import pandas as pd

# dataframe Name and Age columns
df = pd.DataFrame[{'Name': ['A', 'B', 'C', 'D'],
'Age': [10, 0, 30, 50]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1', index=False]

# Close the Pandas Excel writer and output the Excel file.
writer.close[]
7

Xem ví dụ đầy đủ tại Ví dụ. Ví dụ Pandas Excel

Truy cập XlsxWriter từ Pandas

Để áp dụng các tính năng của XlsxWriter như Biểu đồ, Định dạng có điều kiện và Định dạng cột cho đầu ra của Pandas, chúng ta cần truy cập các đối tượng bảng tính và cửa sổ làm việc bên dưới. Sau đó, chúng ta có thể coi chúng như các đối tượng XlsxWriter bình thường

Tiếp tục từ ví dụ trên, chúng tôi làm điều đó như sau

________số 8

Điều này tương đương với đoạn mã sau khi sử dụng XlsxWriter riêng

workbook  = xlsxwriter.Workbook['filename.xlsx']
worksheet = workbook.add_worksheet[]

Các đối tượng Workbook và Worksheet sau đó có thể được sử dụng để truy cập các tính năng khác của XlsxWriter, xem bên dưới

Thêm biểu tượng vào đầu Dataframe

Khi chúng ta có các đối tượng Workbook và Worksheet, như đã trình bày trong phần trước, chúng ta có thể sử dụng chúng để áp dụng các tính năng khác, chẳng hạn như biểu ngữ bổ sung

________số 8

Đầu ra sẽ giống như thế này

Xem ví dụ đầy đủ tại Ví dụ. Đầu ra Pandas Excel với một biểu tượng

Định dạng đầu ra Dataframe

XlsxWriter và Pandas cung cấp rất ít hỗ trợ để định dạng dữ liệu đầu ra từ các khung dữ liệu bên ngoài định dạng mặc định, chẳng hạn như ô tiêu đề và ô chỉ mục và bất kỳ ô nào chứa tháng hoặc thời gian. Ngoài ra, không thể định dạng bất kỳ ô nào đã áp dụng định dạng mặc định

Nếu bạn yêu cầu định dạng định dạng được kiểm tra chặt chẽ phần đầu ra của khung dữ liệu, thì có lẽ tốt hơn là bạn nên sử dụng trực tiếp Xlsxwriter với dữ liệu thô được lấy từ Pandas. Tuy nhiên, một số tùy chọn định dạng có sẵn

Ví dụ. can set date format and time default through the Pandas interface

pip install msoffcrypto-tool
0

Cái gì sẽ cho

Xem ví dụ đầy đủ tại Ví dụ. Đầu ra Pandas Excel với datetimes

Unable to format any data column any other, not date/time by using way

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
8
import pandas as pdwriter = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']writer.close[]
1

Xem ví dụ đầy đủ tại Ví dụ. Đầu ra Pandas Excel với định dạng cột

Thêm một khung dữ liệu vào bảng trang tính

Như đã giải thích trong Làm việc với Bảng Trang tính, các bảng trong Excel là một cách để nhóm một dải ô thành một thực thể duy nhất, như thế này

Cách để thực hiện công việc này với khung dữ liệu Pandas trước tiên là ghi dữ liệu không có mục tiêu hoặc tiêu đề và bằng cách bắt đầu chuyển tiếp 1 hàng để có khoảng trống cho bảng tiêu đề

import pandas as pdwriter = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']writer.close[]
2

Sau đó, chúng tôi tạo một danh sách các tiêu đề để sử dụng trong

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
9
import pandas as pdwriter = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']writer.close[]
4

Cuối cùng, chúng tôi bổ sung cấu trúc bảng Excel, dựa trên khung dữ liệu dạng khung và với các cột tiêu đề mà chúng tôi đã tạo từ các cột khung dữ liệu

import pandas as pdwriter = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']writer.close[]
5

Xem ví dụ đầy đủ tại Ví dụ. Đầu ra Pandas Excel với bảng tính

Thêm bộ lọc tự động vào đầu Dataframe

Như đã giải thích trong Làm việc với bộ lọc tự động, bộ lọc tự động trong Excel là cách lọc vi dữ liệu 2d để chỉ hiển thị các hàng phù hợp với tiêu chí do người dùng xác định

Cách để thực hiện công việc này với khung dữ liệu Pandas trước tiên là ghi dữ liệu mà không có mục đích [ngoại trừ khi bạn muốn đưa nó vào dữ liệu đã lọc]

import pandas as pdwriter = pd.ExcelWriter['demo.xlsx', engine='xlsxwriter']writer.close[]
6

Sau đó, chúng tôi lấy khung dữ liệu dạng khung và thêm bộ lọc tự động

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
0

Chúng tôi cũng có thể thêm một tùy chọn bộ lọc tiêu chí. Phần giữ chỗ “Vùng” trong bộ lọc bị loại bỏ và có thể là bất kỳ chuỗi nào làm tăng thêm sự rõ ràng cho biểu thức

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
1

Tuy nhiên, nếu chỉ áp dụng các tiêu chí là chưa đủ. Các hàng không khớp cũng phải được ẩn. Chúng tôi sử dụng Pandas để tìm hàng cần ẩn

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
2

Điều này mang lại cho chúng tôi một bảng tính được lọc như thế này

Xem ví dụ đầy đủ tại Ví dụ. Đầu ra Pandas Excel với bộ lọc tự động

Xử lý nhiều Pandas Dataframes

Có thể ghi nhiều hơn một khung dữ liệu vào một trang tính hoặc nhiều trang tính. Ví dụ. to write many data frame to many pages

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
3

Xem ví dụ đầy đủ tại Ví dụ. Pandas Excel với nhiều khung dữ liệu

Cũng có thể định vị nhiều khung dữ liệu trong cùng một trang tính

import pandas as pd

# Create a Pandas dataframe from the data.
df = pd.DataFrame[{'Data': [10, 20, 30, 20, 15, 30, 45]}]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter['pandas_simple.xlsx', engine='xlsxwriter']

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel[writer, sheet_name='Sheet1']

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
4

Xem ví dụ đầy đủ tại Ví dụ. Định vị khung dữ liệu Pandas Excel

Chuyển các tùy chọn chức năng tạo XlsxWriter cho Pandas

XlsxWriter hỗ trợ một số tùy chọn chức năng tạo

workbook  = xlsxwriter.Workbook['filename.xlsx']
worksheet = workbook.add_worksheet[]
0, sai thời hạn __
workbook  = xlsxwriter.Workbook['filename.xlsx']
worksheet = workbook.add_worksheet[]
1. Những điều này cũng có thể được áp dụng cho đối tượng
workbook  = xlsxwriter.Workbook['filename.xlsx']
worksheet = workbook.add_worksheet[]
2 được tạo bởi Pandas bằng cách sử dụng từ khóa
workbook  = xlsxwriter.Workbook['filename.xlsx']
worksheet = workbook.add_worksheet[]
3

Chúng tôi có thể chỉnh sửa tệp Excel bằng Python không?

Nhập Python và mô-đun Openpyxl. Openpyxl cung cấp các hàm cho phép bạn làm việc với tệp Excel từ Python . Bạn có thể sử dụng nó để xử lý dữ liệu, tạo bảng tính mới và thậm chí thao tác các công thức. Thư viện rất hữu ích nếu bạn cần tự động hóa các phép tính lặp lại giống nhau trên nhiều tệp Excel.

Chúng ta có thể đọc tệp Excel trong gấu trúc không?

Chúng ta có thể sử dụng hàm read_excel[] của mô-đun pandas để đọc dữ liệu tệp excel vào đối tượng DataFrame

Chủ Đề