使用JS將table表格導出為excel


之前都是用Java在后端做的導出,這次表格數據做的比較麻煩,就直接在前端把table導出了,非常方便。

博客文章鏈接:https://www.zjhuiwan.cn/info/20200212/4004242219096560.html

html表格代碼

<div style="vertical-align:top;padding-left:2px;">
    <a class="btn btn-sm btn-info tooltip" name="excelExport" id="excelExport" onclick="toExcel();" title="導出到excel"><i class="ace-icon fa fa-cloud-download  bigger-110"></i>導出</a>
</div>
<table id="table_report" class="table table-striped table-bordered table-hover" style="margin-top:22px;" border="1">
								<caption style="text-align: center;display:none"><h3>企業反映問題訴求匯總表</h3></caption>
								<caption style="text-align: left;">
									<c:if test="${(pd.addStart!=null&&pd.addStart!='')&&(pd.addEnd==null||pd.addEnd=='')}">
										統計填報時間開始於:${pd.addStart }
									</c:if>
									<c:if test="${(pd.addStart==null||pd.addStart=='')&&(pd.addEnd!=null&&pd.addEnd!='')}">
										統計填報時間結束於:${pd.addEnd }
									</c:if>
								</caption>
								<tr>
									<td >序號</td>
									<td>屬地</td>
									<td>填報企業數量</td>
									<td>反映問題企業數量</td>
									<td>企業問題數量</td>
									<td>人才用工</td>
									<td>金融服務</td>
									<td>財政稅務</td>
									<td>能源要素</td>
									<td>環保安監</td>
									<td>科技創新</td>
									<td>公建配套</td>
									<td>審批服務</td>
									<td>疫情防控</td>
									<td>其他</td>
									<td>備注</td>
								</tr>
								<c:if test="${(name=='admin1'||name=='麗水市' )&&areaTest==null}">
									<tr>
										<td></td>
										<td>合計</td>
										<td>${list.companyNum }</td>
										<td>${list.companyNum }</td>
										<td>${list.questionNum }</td>
										<td>${list.type0Num }</td>
										<td>${list.type1Num }</td>
										<td>${list.type2Num }</td>
										<td>${list.type3Num }</td>
										<td>${list.type4Num }</td>
										<td>${list.type5Num }</td>
										<td>${list.type6Num }</td>
										<td>${list.type7Num }</td>
										<td>${list.type8Num }</td>
										<td>${list.type9Num }</td>
										<td></td>
									</tr>
								<tr>
									<td>1</td>
									<td>市直</td>
									<td>${shizhiList.companyNum }</td>
									<td>${shizhiList.companyNum }</td>
									<td>${shizhiList.questionNum }</td>
									<td>${shizhiList.type0Num }</td>
									<td>${shizhiList.type1Num }</td>
									<td>${shizhiList.type2Num }</td>
									<td>${shizhiList.type3Num }</td>
									<td>${shizhiList.type4Num }</td>
									<td>${shizhiList.type5Num }</td>
									<td>${shizhiList.type6Num }</td>
									<td>${shizhiList.type7Num }</td>
									<td>${shizhiList.type8Num }</td>
									<td>${shizhiList.type9Num }</td>
									<td></td>
								</tr>
						......
								</c:if>
								
								<c:if test="${name!='admin1'&&name!='麗水市' }">
									<tr>
										<td>1</td>
										<td>${name }</td>
										<td>${list.companyNum }</td>
										<td>${list.companyNum }</td>
										<td>${list.questionNum }</td>
										<td>${list.type0Num }</td>
										<td>${list.type1Num }</td>
										<td>${list.type2Num }</td>
										<td>${list.type3Num }</td>
										<td>${list.type4Num }</td>
										<td>${list.type5Num }</td>
										<td>${list.type6Num }</td>
										<td>${list.type7Num }</td>
										<td>${list.type8Num }</td>
										<td>${list.type9Num }</td>
										<td></td>
									</tr>
								</c:if>
							</table>

  

JS代碼

方法1

//導出excel
 function toExcel(){
      //window.location.href='<%=basePath%>pmb/excelShowInfo.do';
      //獲取表格
      var exportFileContent = document.getElementById("table_report").outerHTML;                
      //設置格式為Excel,表格內容通過btoa轉化為base64,此方法只在文件較小時使用(小於1M)
      //exportFileContent=window.btoa(unescape(encodeURIComponent(exportFileContent)));
      //var link = "data:"+MIMEType+";base64," + exportFileContent;
      //使用Blob
      var blob = new Blob([exportFileContent], {type: "text/plain;charset=utf-8"});     	//解決中文亂碼問題
      blob =  new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
    //設置鏈接
      var link = window.URL.createObjectURL(blob); 
      var a = document.createElement("a");    //創建a標簽
      a.download = "企業反映問題訴求匯總表.xls";  //設置被下載的超鏈接目標(文件名)
      a.href = link;                            //設置a標簽的鏈接
      document.body.appendChild(a);            //a標簽添加到頁面
      a.click();                                //設置a標簽觸發單擊事件
      document.body.removeChild(a);            //移除a標簽
 }

  

簡單的table導出為excel就好了。

image.png

`有幾個問題需要注意

1、導出的excel沒有邊框,如下圖。解決辦法:table 需要加border="1";

 158151948900109085079.png

2、表名加粗可以加個<h2></h2>

 

 

3、需要導出但是頁面不需要顯示的可以table中加display:none

4、導出的excel打開會提示不安全,如下圖:

 image.png

這個還未解決..明天看看咋搞。應該是js導出格式的問題,強行成了excel。親測后端用Java導不會有此問題的,

不過要excel不提示此種類型錯誤(一般客戶下載文件可不願意改),可以:

1鍵盤同時按下“Ctrl+R”,打開“運行”,輸入“regedit”打開“注冊表編輯器”

2找到“HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security”選項,也可以在“查看”中勾選“地址欄”將路徑復制到地址欄中。根據版本不同也可能是14.0(Office 2010)等等,根據情況而定。

3在空白右鍵單擊並且新建,選擇“DWORD(32-位)值(D)”。此時列表下會出現一個”新值#1“的項。

4選中”新值#1“右鍵單擊,選擇“重命名”,將名字改為“ExtensionHardening”,注意區分大小寫。

 5選中剛剛修改的“ExtensionHardening”,右鍵單擊“修改”。

6將數值改為0,並且保持默認的是十六進制不變,然后點擊確定完成設置。

再打開就不提示了...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM