python django框架前端頁面支援匯出excel檔案
- 實際業務中,針對每個產品線運營人員操作後臺經常需要匯出excel檔案,本例採用抓取的爬蟲資料,當後臺資料在頁面裡顯示完後,點選匯出按鈕,頁面提示匯出成功或失敗資訊,成功則匯出Excel檔案到
static/xlsxfiles
資料夾,全部匯出後生成檔名為all_poemers.xlsx
的excel檔案,搜尋某一使用者後生成檔名為{{ poemer }}.xlsx
的檔案 ,{{ poemer }}
為django模板變數搜尋 '李白' 則生成 李白.xlsx
- 前端採用jQuery和js,使用ajax請求後臺介面,兩個頁面的前端程式碼如下:
2.1 poemers.html頁面修改的部分
<!--poemers.html頁面修改的部分-->
<form method="post" action="{% url 'tangshi:poemers_search' %}" class="container">
<p><label for="poemer">請輸入詩人名:</label> <input id="poemer" maxlength="1000" name="poemer" value="" type="text" style="width: 400px"/>
<input type="submit" value="搜尋">
<button id="export_excel" type="button">匯出excel</button>
</p>
<br>
{% csrf_token %}
</form>
<script type="text/javascript">
$(document).ready(function () {
$("#export_excel").click(function () {
htmlobj = $.ajax({url: "{% url 'tangshi:export_all_excel' %}", async: false});
alert(htmlobj.responseText);
});
});
</script>
其中{% url 'tangshi:export_all_excel' %}
是django的url模板 標籤用法,'tangshi:export_all_excel'
指向的是app應用 tangshi下面urls.py中name='export_all_excel'
,其對應的view檢視函式是 app應用tangshi下面 views.py中的 export_all_excel函式.
2.2 poemers_search.html頁面修改的部分
<!--poemers_search.html頁面 ajax請求-->
<p><label for="poemer">請輸入詩人名:</label> <input id="poemer" maxlength="1000" name="poemer" value="{{ poemer }}" type="text" style="width: 400px"/>
<button id="search" type="button">搜尋</button>
<script type="text/javascript">
var poemer = $("input[ name='poemer' ]").val();
$.ajax({
type: 'POST',
url: "{% url 'tangshi:poemers_search' %} ",
data: {
'poemer': poemer,
'csrfmiddlewaretoken': '{{ csrf_token }}'
},
success: 'success'
});
</script>
<button id="export_excel" type="button">匯出excel</button>
<script type="text/javascript">
$(document).ready(function () {
$("#export_excel").click(function () {
var poemer = $("input[name='poemer']").val();
$.ajax({
type: 'POST',
url: "{% url 'tangshi:export_per_excel' %} ",
data: {
'poemer': poemer,
'csrfmiddlewaretoken': '{{ csrf_token }}'
},
success: 'success'
});
alert_text = '匯出' + poemer + '資料成功';
alert(alert_text);
});
});
</script>
</p>
2.3 tangshi.urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^poemers_search/$', views.poemers_search, name='poemers_search'),
url(r'^poemers/$', views.poemers, name='poemers'),
url(r'^all_word_cloud/$', views.poem_ajax, name='all_word_cloud'),
url(r'^export_all_excel/$', views.export_all_excel, name='export_all_excel'),
url(r'^export_per_excel/$', views.export_per_excel, name='export_per_excel'),
]
2.4 tangshi.views.py 中export_all_excel 函式為 例項化 SQLS/tangshi_sqls.py裡的TangShi類的export_excel函式
def export_all_excel(request):
tangshi = TangShi()
alert_text = tangshi.export_excel(None)
return HttpResponse(alert_text)
2.5 SQLS/tangshi_sqls.py裡的TangShi類的export_excel函式
#首先邏輯判斷是搜尋頁面還是預設全部顯示頁面,全部顯示頁面poemer值為None,匯出全部,搜尋頁面匯出某一個詩人資料 poemer會有值
def export_excel(self,poemer):
par_path = path.join(BASE_DIR, 'static/xlsxfiles')
os.chdir(par_path)
if poemer:
file = poemer + '.xlsx'
# 刪除昨日執行檔案
if os.path.isfile(file):
os.remove(file)
data = self.per_poemer_data(poemer)
else:
file ='all_poemers.xlsx'
if os.path.isfile(file):
os.remove(file)
data = self.all_poemers_data()
fields = ['id', 'chaodai', 'poemer', 'zuopins_total', 'poemer_url']
workbook = xlsxwriter.Workbook(file)
worksheet = workbook.add_worksheet('data')
# 表頭格式
format1 = workbook.add_format(
{'bold': True, 'font_color': 'black', 'font_size': 13, 'align': 'left', 'font_name': u'宋體'})
# 表頭外格式
format2 = workbook.add_format({'font_color': 'black', 'font_size': 9, 'align': 'left', 'font_name': u'宋體'})
# A列列寬設定能更好的顯示
worksheet.set_column("A:A", 9)
# 插入第一行表頭標題
for i in range(0, len(fields)):
field = fields[i]
worksheet.write(0, i, field, format1)
#從第二行開始插入資料
for i in range(len(data)):
item = data[i]
for j in range(len(fields)):
field = fields[j]
worksheet.write(i+1, j, item[field], format2)
workbook.close()
alert_text = '匯出%s條資料到excel成功' % len(data)
return alert_text
-
匯出
3.1 匯出全部檔案3.2 匯出搜尋結果的檔案
相關文章
- java匯出Excel檔案JavaExcel
- django實現將後臺資料excel檔案形式匯出DjangoExcel
- EasyExcel完成excel檔案的匯入匯出Excel
- POI匯出excel檔案加水印Excel
- Laravel-admin 匯出excel檔案LaravelExcel
- 前端必讀:如何在 JavaScript 中使用 SpreadJS 匯入和匯出 Excel 檔案前端JavaScriptJSExcel
- vue 前端匯出 excelVue前端Excel
- 如何使用JavaScript匯入和匯出Excel檔案JavaScriptExcel
- 原生PHP網頁匯出和匯入excel檔案例項PHP網頁Excel
- vue3 匯出為Excel檔案VueExcel
- C#中DataGrid匯出Excel檔案C#Excel
- 二進位制陣列實戰 – 純前端匯出Excel檔案陣列前端Excel
- 二進位制陣列實戰 - 純前端匯出Excel檔案陣列前端Excel
- 微信小程式之匯出頁面為doc檔案微信小程式
- excel匯出、mysql分頁ExcelMySql
- 前端頁面渲染markDown檔案前端
- 匯入excel檔案Excel
- Excel/CSV 匯入匯出庫,支援大檔案,樣式設定,單元格合併Excel
- 報表如何批次匯出成 excel 檔案Excel
- 使用PHP原生匯出Excel和CSV檔案PHPExcel
- java 匯出 excel 最佳實踐,java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架JavaExcelOOM記憶體溢位框架
- 金山文件怎麼匯出excel檔案 金山文件到處excel檔案的方法Excel
- 利用xlrd模組在Django專案中實現Excel檔案匯入DjangoExcel
- Vue框架下實現匯入匯出Excel、匯出PDFVue框架Excel
- 基於Vue + axios + WebApi + NPOI匯出Excel檔案VueiOSWebAPIExcel
- php讀取excel檔案資料的匯入和匯出PHPExcel
- 前端實現Excel匯入和匯出功能前端Excel
- abp框架Excel匯出——基於vue框架ExcelVue
- .NET CORE 2.1 匯出excel檔案的兩種方法Excel
- 踹掉後端,前端匯出Excel!後端前端Excel
- 前端常用方法之匯出excel表格前端Excel
- vue實現前端匯出excel表格Vue前端Excel
- Java POI匯入Excel檔案JavaExcel
- vue專案前端匯出word檔案(bug解決)Vue前端
- Laravel5.6中使用Laravel/Excel實現Excel檔案匯出功能LaravelExcel
- 前端讀取excel檔案前端Excel
- SAP UI5 表格資料如何匯出成 Excel 檔案(Table Export As Excel)UIExcelExport
- 網頁中Office和pdf相關檔案匯出網頁
- 匯出excelExcel