Hướng dẫn django download excel file - django tải xuống tệp excel

Tôi có một nút tải xuống một tệp Excel với tiện ích mở rộng

with open(path, 'rb') as f:
  response = HttpResponse(f.read(), content_type="application/ms-excel")
  response['Content-Disposition'] = 'attachment; filename={}_Report{}'.format(testname, extension)
3. Tôi đang sử dụng mô -đun
with open(path, 'rb') as f:
  response = HttpResponse(f.read(), content_type="application/ms-excel")
  response['Content-Disposition'] = 'attachment; filename={}_Report{}'.format(testname, extension)
4 để phân tích tệp và trả lại cho người dùng. Tuy nhiên, nó dường như thêm tên đối tượng vào tệp Excel thay vì dữ liệu.

Làm thế nào tôi có thể trả lại tệp cho người dùng với dữ liệu thay vì tên đối tượng?

Lượt xem

def download_file(self, testname):
    import csv, socket, os, xlrd
    extension = '.xls'
    path = r"C:\tests\{}_Report{}".format(testname, extension)   
    try:
        f = xlrd.open_workbook(path)
        response = HttpResponse(f, content_type='application/ms-excel')
        response['Content-Disposition'] = 'attachment; filename={}_Report{}'.format(testname, extension)
        return response
    except Exception as Error:
        return HttpResponse(Error)
    return redirect('emissions_dashboard:overview_view_record')

Kết quả Excel

Tải xuống thành công:

Hướng dẫn django download excel file - django tải xuống tệp excel

Content:

Hướng dẫn django download excel file - django tải xuống tệp excel

Lưu ý: Tôi hiểu đây là một định dạng tệp cũ nhưng được yêu cầu cho dự án cụ thể này.

Hỏi ngày 14 tháng 12 năm 2020 lúc 11:20Dec 14, 2020 at 11:20

Hướng dẫn django download excel file - django tải xuống tệp excel

Bạn đang cố gắng gửi một đối tượng xlrd.book.book, không phải một tệp.

Bạn đã sử dụng XLRD để làm những việc của mình trong sổ làm việc, và sau đó lưu vào một tệp.

workbook = xlrd.open_workbook(path)
#... do something
workbook.save(path)

Bây giờ bạn gửi nó như bất kỳ tệp nào khác:

with open(path, 'rb') as f:
  response = HttpResponse(f.read(), content_type="application/ms-excel")
  response['Content-Disposition'] = 'attachment; filename={}_Report{}'.format(testname, extension)

Đã trả lời ngày 14 tháng 12 năm 2020 lúc 12:00Dec 14, 2020 at 12:00

TxematxemaTxema

8295 Huy hiệu bạc15 Huy hiệu Đồng5 silver badges15 bronze badges

0

Nội dung chính

Nội dung chính ShowShow

  • Cách cài openpyxl trong python
  • Cài openpyxl bằng pip install openpyxl
  • Các class hỗ trợ xử lý file excel trong module openpyxl
  • Đọc file excel trong python | openpyxl
  • Đọc toàn bộ file excel bằng python
  • Đọc một sheet trong file excel bằng python
  • Đọc một ô trong file excel bằng python
  • Đọc các ô tại một phạm vi chỉ định trong sheet excel
  • Trích xuất dữ liệu từ file Excel bằng Python
  • Trích xuất toàn bộ giá trị các ô trong sheet excel bằng python
  • Lấy giá trị các ô tại một phạm vi chỉ định trong sheet excel
  • Đếm số dòng có dữ liệu trong excel bằng python
  • Đếm số cột có dữ liệu trong excel bằng python
  • Tổng kết

Nội dung chính

  • Cách cài openpyxl trong python
  • Cài openpyxl bằng pip install openpyxl
  • Các class hỗ trợ xử lý file excel trong module openpyxl
  • Đọc file excel trong python | openpyxl
  • Đọc toàn bộ file excel bằng python
  • Đọc một sheet trong file excel bằng python
  • Đọc một ô trong file excel bằng python
  • Đọc các ô tại một phạm vi chỉ định trong sheet excel
  • Trích xuất dữ liệu từ file Excel bằng Python
  • Trích xuất toàn bộ giá trị các ô trong sheet excel bằng python
  • Lấy giá trị các ô tại một phạm vi chỉ định trong sheet excel
  • Đếm số dòng có dữ liệu trong excel bằng python
  • Đếm số cột có dữ liệu trong excel bằng python
  • Tổng kết
  • Cách cài openpyxl trong python
  • Cài openpyxl bằng pip install openpyxl
  • Các class hỗ trợ xử lý file excel trong module openpyxl
  • Đọc file excel trong python | openpyxl
  • Đọc toàn bộ file excel bằng python
  • Đọc một sheet trong file excel bằng python
  • Đọc một ô trong file excel bằng python
  • Đọc các ô tại một phạm vi chỉ định trong sheet excel
  • Trích xuất dữ liệu từ file Excel bằng Python
  • Trích xuất toàn bộ giá trị các ô trong sheet excel bằng python
  • Lấy giá trị các ô tại một phạm vi chỉ định trong sheet excel
  • Đếm số dòng có dữ liệu trong excel bằng python
  • Đếm số cột có dữ liệu trong excel bằng python
  • Tổng kết

Hướng dẫn cách xử lý file excel trong python. Bạn sẽ học được cách cài openpyxl và dùng module này để đọc file excel trong python cũng như là để trích xuất dữ liệu từ file Excel bằng Python sau bài học này.xử lý file excel trong python. Bạn sẽ học được cách cài openpyxl và dùng module này để đọc file excel trong python cũng như là để trích xuất dữ liệu từ file Excel bằng Python sau bài học này.xử lý file excel trong python. Bạn sẽ học được cách cài openpyxl và dùng module này để đọc file excel trong python cũng như là để trích xuất dữ liệu từ file Excel bằng Python sau bài học này.

  • Bài viết liên quan: Ghi dữ liệu vào file Excel trong Python.

Cách cài openpyxl trong python

Cài openpyxl bằng pip install openpyxl

Để thực hiện các xử lý file excel trong python, chúng ta cần cài module openpyxl vào trong máy tính bằng cách sử dụng pip trên màn hình Anaconda Prompt như sau:pip trên màn hình Anaconda Prompt như sau:pip trên màn hình Anaconda Prompt như sau:

pip install openpyxl

Bạn có thể thấy version của openpyxl đã được cài như trong khung đỏ trên ảnh ở trên. Sau khi cài openpyxl, chúng ta có thể thực hiện các xử lý file excel trong python bằng openpyxl.

Nếu không muốn sử dụng module này nữa, bạn cũng có thể xóa openpyxl từ máy tính cũng bằng cách sử dụng pip như sau:pip như sau:pip như sau:

pip uninstall openpyxl

Các class hỗ trợ xử lý file excel trong module openpyxl

Đọc file excel trong python | openpyxl

Đọc toàn bộ file excel bằng pythonĐọc một sheet trong file excel bằng python
Đọc một ô trong file excel bằng pythonĐọc các ô tại một phạm vi chỉ định trong sheet excel
Trích xuất dữ liệu từ file Excel bằng PythonTrích xuất toàn bộ giá trị các ô trong sheet excel bằng python
Lấy giá trị các ô tại một phạm vi chỉ định trong sheet excelĐếm số dòng có dữ liệu trong excel bằng python

Đếm số cột có dữ liệu trong excel bằng python

Đọc file excel trong python | openpyxl

Đọc toàn bộ file excel bằng python

Đọc một sheet trong file excel bằng python

Đọc một ô trong file excel bằng python

import openpyxl
import pprint
  • Đọc các ô tại một phạm vi chỉ định trong sheet excel

Trích xuất dữ liệu từ file Excel bằng Python

wb = openpyxl.load_workbook('./user/sample.xlsx')

Trích xuất toàn bộ giá trị các ô trong sheet excel bằng pythonworkbook object, chúng ta có thể dùng các phương thức tích hợp trong class workbook để xử lý file excel với object đó, ví dụ như lấy toàn bộ tên sheet trong excel:

print(wb.sheetnames)

Đọc một sheet trong file excel bằng python

Đọc một ô trong file excel bằng python

sheet = wb['Sheet1']

Đọc các ô tại một phạm vi chỉ định trong sheet excelworksheet object, chúng ta có thể truy cập tới một ô trong worksheet đó, ví như A2, B3.. bằng cách tạo ra một object của class cell chứa nội dung của ô đó như sau:

cellA2 = sheet['A2']
cellB3 = sheet['B3']

Đọc một ô trong file excel bằng python

Đọc các ô tại một phạm vi chỉ định trong sheet excelcell object, chúng ta có thể sử dụng các phương thức tích hợp trong class cell để xử lý object vừa tạo, ví dụ như lấy giá trị của ô đó:

cell = sheet['A2']
print(cell.value)

Trích xuất dữ liệu từ file Excel bằng Python

Trích xuất toàn bộ giá trị các ô trong sheet excel bằng python

Đọc các ô tại một phạm vi chỉ định trong sheet excel

Trích xuất dữ liệu từ file Excel bằng Pythonworksheet object đã tạo ở trên và lấy ra từ worksheet toàn bộ các ô trong phạm vi đó dưới dạng một tuple như sau:worksheet object đã tạo ở trên và lấy ra từ worksheet toàn bộ các ô trong phạm vi đó dưới dạng một tuple như sau:

cells_tuple = sheet['A2:C4']

pprint.pprint(cells_tuple)



Trích xuất toàn bộ giá trị các ô trong sheet excel bằng python

workbook = xlrd.open_workbook(path)
#... do something
workbook.save(path)
0
  • Lấy giá trị các ô tại một phạm vi chỉ định trong sheet excel

Đếm số dòng có dữ liệu trong excel bằng python

workbook = xlrd.open_workbook(path)
#... do something
workbook.save(path)
1

Sau khi đọc các cell đó dưới dạng list, bạn có thể sử dụng các thao tác với list để xử lý các cell này. Ví dụ lấy giá trị của một cell chỉ định bằng cách truy cập vào phần tử trong list như sau:

wb = openpyxl.load_workbook('./user/sample.xlsx')
0
  • Xem thêm các cách xử lý list tại chuyên đề List trong python

Trích xuất dữ liệu từ file Excel bằng Python

Trích xuất toàn bộ giá trị các ô trong sheet excel bằng python

Bằng cách sử dụng thuộc tính

print(wb.sheetnames)

3 trong class Worksheet, chúng ta có thể tạo ra một generator - một hàm dùng để tạo ra các trình lặp trong python, rồi sau đó dùng class list để biến generator trên thành một list chứa toàn bộ giá trị các ô trong sheet excel như dưới đây:class Worksheet, chúng ta có thể tạo ra một generator - một hàm dùng để tạo ra các trình lặp trong python, rồi sau đó dùng class list để biến generator trên thành một list chứa toàn bộ giá trị các ô trong sheet excel như dưới đây:
wb = openpyxl.load_workbook('./user/sample.xlsx')
1class Worksheet, chúng ta có thể tạo ra một generator - một hàm dùng để tạo ra các trình lặp trong python, rồi sau đó dùng class list để biến generator trên thành một list chứa toàn bộ giá trị các ô trong sheet excel như dưới đây:
wb = openpyxl.load_workbook('./user/sample.xlsx')
1

Chúng ta cũng có thể tự tạo ra một hàm lấy toàn bộ giá trị các ô trong sheet excel bằng cách sử dụng tới List comprehension trong python như sau:

wb = openpyxl.load_workbook('./user/sample.xlsx')
2

Với cả hai cách trên đều cho ra cùng kết quả, toàn bộ giá trị các ô trong sheet được lấy ra dưới dạng một list 2 chiều trong python như sau:list 2 chiều trong python như sau:list 2 chiều trong python như sau:

wb = openpyxl.load_workbook('./user/sample.xlsx')
3

Lấy giá trị các ô tại một phạm vi chỉ định trong sheet excel

Đếm số dòng có dữ liệu trong excel bằng python

wb = openpyxl.load_workbook('./user/sample.xlsx')
4

Sau khi đọc các cell đó dưới dạng list, bạn có thể sử dụng các thao tác với list để xử lý các cell này. Ví dụ lấy giá trị của một cell chỉ định bằng cách truy cập vào phần tử trong list như sau:

wb = openpyxl.load_workbook('./user/sample.xlsx')
5

Đếm số dòng có dữ liệu trong excel bằng python

Sau khi đọc các cell đó dưới dạng list, bạn có thể sử dụng các thao tác với list để xử lý các cell này. Ví dụ lấy giá trị của một cell chỉ định bằng cách truy cập vào phần tử trong list như sau:max_row trong class Workbook với cú pháp sau đây:

sheet.max_row

Xem thêm các cách xử lý list tại chuyên đề List trong python

wb = openpyxl.load_workbook('./user/sample.xlsx')
6

Trích xuất dữ liệu từ file Excel bằng Python

wb = openpyxl.load_workbook('./user/sample.xlsx')
7

Bằng cách sử dụng thuộc tính

wb = openpyxl.load_workbook('./user/sample.xlsx')
8

Chúng ta cũng có thể tự tạo ra một hàm lấy toàn bộ giá trị các ô trong sheet excel bằng cách sử dụng tới List comprehension trong python như sau:max_column trong class Workbook với cú pháp sau đây:

sheet.max_column

Với cả hai cách trên đều cho ra cùng kết quả, toàn bộ giá trị các ô trong sheet được lấy ra dưới dạng một list 2 chiều trong python như sau:list 2 chiều trong python như sau:

wb = openpyxl.load_workbook('./user/sample.xlsx')
9

Nếu chúng ta chỉ muốn lấy giá trị các ô tại một phạm vi chỉ định trong sheet excel, thay vì đọc toàn bộ sheet và lấy ra toàn bộ giá trị của ô trong đó, chúng ta chỉ cần đọc các ô tại một phạm vi chỉ định như Kiyoshi đã hướng dẫn ở trên, và sau đó lấy ra các giá trị của ô tồn tại trong phạm vi đó là xong.

Kết quả, toàn bộ giá trị các ô tại phạm vi chỉ định trong sheet được lấy ra dưới dạng list hai chiều như sau:

Để đếm số dòng có dữ liệu trong excel bằng python, chúng ta sử dụng thuộc tính max_row trong class Workbook với cú pháp sau đây:max_row trong class Workbook với cú pháp sau đây:đọc file excel trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Ví dụ, chúng ta đếm số dòng có dữ liệu trong excel bằng python với mã lệnh sau đây:

Ứng dụng sheet.max_row, chúng ta có thể tạo ra một hàm đếm số dòng có dữ liệu và lấy tất cả dữ liệu đó ra trừ dòng header như sau: