2010-04-14 4 views
5

Tôi có một bảng HTML mà tôi muốn có thể xuất sang tệp Excel. Tôi đã có một tùy chọn để xuất bảng vào một tệp IQY, nhưng tôi muốn một cái gì đó không cho phép người dùng làm mới dữ liệu qua Excel. Tôi chỉ muốn một tính năng chụp nhanh bảng tại thời điểm người dùng nhấp vào liên kết/nút.Django/Python: Lưu bảng HTML vào Excel

Tôi muốn nó nếu tính năng là một liên kết/nút trên trang HTML cho phép người dùng lưu kết quả truy vấn được hiển thị trong bảng. Nó cũng sẽ được tốt đẹp nếu định dạng từ HTML/CSS có thể được giữ lại. Có cách nào để làm điều này không? Hoặc, một cái gì đó tôi có thể sửa đổi với IQY?

Tôi có thể cố gắng cung cấp thêm chi tiết nếu cần. Cảm ơn trước.

Trả lời

7

Bạn có thể sử dụng mô-đun xlwt tuyệt vời. Nó rất dễ sử dụng và tạo tệp theo định dạng xls (Excel 2003).

Dưới đây là một (chưa được kiểm tra!) Ví dụ về sử dụng cho một cái nhìn Django:

from django.http import HttpResponse 
import xlwt 

def excel_view(request): 
    normal_style = xlwt.easyxf(""" 
    font: 
     name Verdana 
    """) 
    response = HttpResponse(mimetype='application/ms-excel') 
    wb = xlwt.Workbook() 
    ws0 = wb.add_sheet('Worksheet') 
    ws0.write(0, 0, "something", normal_style) 
    wb.save(response) 
    return response 
2

Sử dụng CSV. Có một mô-đun trong Python ("csv") để tạo ra nó, và excel có thể đọc nó một cách tự nhiên.

+0

Từ quan điểm giao diện người dùng, tôi sẽ trình bày tệp CSV cho người dùng như thế nào? Người dùng đã xem trang này, vậy họ có nhấp vào liên kết sau đó quay lại một số chức năng xem và tạo tệp CSV, sau đó ...? – kafuchau

+0

Ngoài ra, CSV sẽ không giữ bất kỳ định dạng nào mà bảng HTML của tôi đã có, phải không? – kafuchau

+0

Phải. Với CSV, kết quả không đẹp; nó không chỉ là vấn đề về phong cách, mà ngay cả chiều rộng cột cũng chỉ là chiều rộng tiêu chuẩn. Vì có nhiều cách để tạo các tệp Excel gốc, tôi sẽ không khuyên bạn nên sử dụng CSV. –

0

hỗ trợ Excel mở một tập tin HTML có chứa một bảng như một bảng tính (ngay cả với định dạng CSS).

Về cơ bản, bạn phải phân phát nội dung HTML đó từ chế độ xem django, với loại nội dung application/ms-excel như Roberto cho biết.

Hoặc nếu bạn cảm thấy mạo hiểm, bạn có thể sử dụng một cái gì đó như Downloadify để chuẩn bị tệp được tải xuống ở phía máy khách.