1. 程式人生 > >bootstrap table和tableExport匯出支援中文的Excel和pdf等表格

bootstrap table和tableExport匯出支援中文的Excel和pdf等表格

前言

  • 由於最近專案有一個匯出表格為pdf格式,所以就做了這個功能。由於專案的表格是基於bootstrap和bootstrap table實現的,相對於easyUI來說它的優點是更方便,更好相容。
  • 從程式碼可以發現bootstrap table本身是沒有實現表格的匯出的,需要擴充套件外掛tableExport,擴充套件的tableExport在匯出csv,txt,sql,json等格式的時候能很好的支援中文,不過需要匯入相應js檔案(本文會解決),但是對於pdf格式的就不支援中文了,如何解決是本文的中點。

    前提

  • 首先得下載幾個外掛:

注意

  • 由於bootstrap和其擴充套件的外掛都是基於jquery來實現的,所以在使用這些外掛的時候必須先把jquery引入。
  • 對於版本有要求,bootstrap對jquery的版本有依賴,在bootstrap的bower.json 檔案中列出了 bootstrap 所支援的 jquery 版本,請對應下載jquery版本。
  • 不能把單個的css、js檔案提出來放在一個檔案中因為有的檔案有關聯,提出來就導致某些功能用不了。

步驟 下載的檔案整理:

  • 新建檔案bootstrap_above;
  • 將下載的tableExport.jquery.plugin-master檔案重新命名為tableExport;
  • 將重新命名的tableExport和下載的bootstrap、bootstrap-table-develop、jquery-1.9.1檔案放入bootstrap_above檔案中。
  • 修改檔案,tableExport預設是使用jspdf來實現匯出pdf的,但是jspdf不支援中文,所以我們改用pdfmake方式,但是必須自定義字型生成vfs_fonts.js,博主已經自定義好需要的請自己下載。將vfs_fonts.js檔案替換掉bootstrap_above\tableExport\libs\pdfmake目錄下的vfs_fonts.js檔案。
  • 將tableExport.js檔案的程式碼
pdfmake: {enabled: false,                               // true: use pdfmake instead of jspdf and
jspdf-autotable (experimental) docDefinition: {pageOrientation: 'portrait', // 'portrait' or 'landscape' defaultStyle: {font: 'Roboto' // default is 'Roboto', for arabic font set this option to 'Mirza' and include mirza_fonts.js } }, fonts: {} },

修改為

pdfmake: {enabled: true},
  • 將tableExport.js檔案的程式碼
          var docDefinition = { content: [ {
                                  table: {
                                    headerRows: $hrows.length,
                                    widths: widths,
                                    body: body
                                  }
                               }]};

          $.extend(true, docDefinition, defaults.pdfmake.docDefinition);

          pdfMake.fonts = {
            Roboto: {
              normal: 'Roboto-Regular.ttf',
              bold: 'Roboto-Medium.ttf',
              italics: 'Roboto-Italic.ttf',
              bolditalics: 'Roboto-MediumItalic.ttf'
            }
          };
            $.extend(true, pdfMake.fonts, defaults.pdfmake.fonts);

替換為

pdfMake.fonts = {
                Roboto: {
                    normal: 'Roboto-Regular.ttf',
                    bold: 'Roboto-Medium.ttf',
                    italics: 'Roboto-Italic.ttf',
                    bolditalics: 'Roboto-Italic.ttf'
                },
                微軟雅黑: {
                    normal: 'msyh.ttf',
                    bold: 'msyhbd.ttf',
                    italics: 'msyh.ttf',
                    bolditalics: 'msyhbd.ttf'
                }
            };

            $.extend(true, pdfMake.fonts, defaults.pdfmake.fonts);
            var docDefinition = {
                pageOrientation: 'landscape',
                content: [
                    {
                        table: {
                            headerRows: $hrows.length,
                            widths: widths,
                            body: body
                        }
                    }
                ],
                defaultStyle: {
                    font: '微軟雅黑'
                }
            };
            $.extend(true, docDefinition, defaults.pdfmake.docDefinition);

至此前期工作就做好了,接下來就是使用了。

html程式碼(注意引用js的順序,部分順序不能改變)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <link rel="icon" href="img/favicon.ico">
        <title>Bootstrap 模板</title>
        <!--
            描述:樣式匯入
        -->
        <link rel="stylesheet" href="js/bootstrap_above/bootstrap/css/bootstrap.min.css" />
        <link rel="stylesheet" href="js/bootstrap_above/bootstrap-table-develop/dist/bootstrap-table.css"/>

        <!--
            描述:js匯入,注意順序,jquery必須引入
            bootstrap-table-zh-CN.js為表格漢化的檔案
            FileSaver.min.js等是關聯引用檔案
        -->
        <script src="js/bootstrap_above/jquery-1.9.1/jquery.min.js"></script>
        <script src="js/bootstrap_above/bootstrap/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/bootstrap-table-develop/dist/bootstrap-table.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/bootstrap-table-develop/dist/locale/bootstrap-table-zh-CN.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/bootstrap-table-develop/dist/extensions/export/bootstrap-table-export.js"></script>

        <script src="js/bootstrap_above/tableExport/libs/pdfmake/pdfmake.min.js"></script>
        <script src="js/bootstrap_above/tableExport/libs/pdfmake/vfs_fonts.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/tableExport/libs/FileSaver/FileSaver.min.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/tableExport/libs/jsPDF/jspdf.min.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/tableExport/libs/jsPDF-AutoTable/jspdf.plugin.autotable.js"></script>
        <script type="text/javascript" src="js/bootstrap_above/tableExport/tableExport.js"></script>

        <script src="js/table.js"></script>
    </head>
    <body>
        <table class="table-responsive" id="db_dependences">

        </table>
    </body>
</html>

js塊table.js程式碼


$(function () {
    $('#db_dependences').bootstrapTable({
        method:'POST',
        dataType:'json',
        contentType: "application/x-www-form-urlencoded",
        cache: false,
        striped: true,                              //是否顯示行間隔色
        sidePagination: "client",           //分頁方式:client客戶端分頁,server服務端分頁(*)
        showColumns:true,
        pagination:true,
        minimumCountColumns:2,
        pageNumber:1,                       //初始化載入第一頁,預設第一頁
        pageSize: 20,                       //每頁的記錄行數(*)
        pageList: [10, 25, 50, 100],        //可供選擇的每頁的行數(*)
        uniqueId: "id",                     //每一行的唯一標識,一般為主鍵列
        showExport: true,                    
        exportDataType: 'all',
        exportTypes:[ 'csv', 'txt', 'sql', 'doc', 'excel', 'xlsx', 'pdf'],  //匯出檔案型別
        columns: [{
            field: 'id',
            title: 'Item ID'
        }, {
            field: 'name',
            title: 'Item Name'
        }, {
            field: 'price',
            title: 'Item Price'
        }],
        data: [{
            id: 1,
            name: '專案 1',
            price: '價格$1'
        }, {
            id: 2,
            name: '專案 2',
            price: '價格$2'
        }]
    });
});

結果不多說有圖才有真相

介面截圖a
介面截圖b
pdf結果

原始碼下載

下載連結:ExportPDF_ch
注:本文為原創,轉載請註明出處。

相關推薦

bootstrap tabletableExport匯出支援中文Excelpdf表格

前言 由於最近專案有一個匯出表格為pdf格式,所以就做了這個功能。由於專案的表格是基於bootstrap和bootstrap table實現的,相對於easyUI來說它的優點是更方便,更好相

使用bootstrap table時不能顯示篩選列分頁每頁顯示的行數

pts -i str 顯示 data bootstra 同事 bootstrap src 使用bootstrap table時不能顯示篩選列和分頁每頁顯示的行數 後來在同事的幫助下,才發現沒有引用bootstrap的js文件 <script src="/Scr

樹莓派(raspberry pi)學習6: 中文支援(中文顯示中文輸入法)

樹莓派(raspberry pi)的原版是沒有中文支援的,需安裝 startx 後,用 Midori 瀏覽器 可以瀏覽網頁 瀏覽www.baidu.com,一堆亂碼 安裝中文顯示支援 第一步,先為終端進行相關更新:sudo apt-get update 第二步:為

擴充套件Bootstrap-table外掛使其支援通過下拉框快速跳轉至任意頁數

前言 最近專案使用的Metronic前端框架,表格外掛採用bootstrap-table V1.11.1(http://bootstrap-table.wenzhixin.net.cn/zh-cn/),是一款功能強大的表格外掛,非常適合在後臺管理系統裡使用。在

讓Tomcat支援中文路徑中文檔名

apache-tomcat-6.0.35\conf目錄中server.xml  <Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1"                connectionTimeou

設定 putty 支援中文輸入顯示

預設情況下,putty上中文將顯示亂碼,如果遠端 linux 的 locale 設定為 zh_CN.*(bg2312,gbk,utf8等等),顯示就是亂碼。其實 putty 的中文支援還是很好的。 開啟putty主程式,照我這樣設定,我已經用紅框標明 我使用的是Yah

在python中使用openpyxlxlrd建立一個新Excel並把原表格資料複製到新表中

在Python中使用openpyxl和xlrd建立一個新Excel並把原表格資料複製到新表中 新的開始 文科出生,經濟學專業,年近四旬,純粹是把這個當成一個興趣在學。很早之前就打算學Python,但是一直停留在安裝好Python,這幾天比較空閒,開始從最最基礎自

bootstrap table footerFormatter用法 統計列求和 sum、average

其實上一篇blog裡已經貼了程式碼,簡單解釋一下吧: 1、showFooter: true,很重要,設定footer顯示: $(cur_table).bootstrapTable({ url:

如何在Android的ListView中構建CheckBoxRadioButton列表(支援單選多選的投票專案示例)

引言 我們在android的APP開發中有時候會碰到提供一個選項列表供使用者選擇的需求,如在投票型別的專案中,我們提供一些主題給使用者選擇,每個主題有若干選項,使用者對這些主題的選項進行選擇,然後提交。 本文以一個支援單選和多選投票專案為例,演示了在一個ListView中如何構建CheckBox列表和Ra

基於CSerialPort修改類的串列埠除錯助手原始碼(支援中文、自動儲存

QQ技術交流群:129518033最新進展:CSerialPort串列埠類最新修正版2017-12-16本串列埠工具整合目前多數串列埠工具的優秀功能於一身,採用CSerialPort類進行編寫,並在此基礎上對該類進行了改進。本工具免費試用,永不過期。並且本著奉獻的精神,公開本

用VCMinGW匯出dll的deflib(a)檔案

開發十年,就只剩下這套架構體系了! >>>   

如何從word、excelpdf檔案中提取文字(Tika)

Tika-內容分析工具包 官方網站:https://tika.apache.org/ 在maven倉庫下載最新版依賴 https://mvnrepository.com/artifact/org.apache.tika/tika-parsers 懶得去的同學,提供一個筆者正在使

java 技術文件 用java獲得word,excelpdf文件的內容

很多人用java進行文件操作時經常會遇到一個問題,就是如何獲得word,excel,pdf等文件的內容?我研究了一下,在這裡總結一下抽取word,pdf的幾種方法。   1. 用jacob   其實jacob是一個bridage,連線java和com或者win32函式的一箇

解決bootstrap table的export擴充套件模組利用tableExport匯出pdf中文亂碼問題

緣由:沒有積分了,怎麼破?自己研究。參考文章:https://blog.csdn.net/qq_34117170/article/details/72765646https://www.cnblogs.com/xrab/p/7210588.htmlhttps://www.np

PDF電子發票解析成excel支援批量解析匯出功能

PDF電子發票解析成excel,支援批量解析和匯出功能 https://blog.csdn.net/m0_38035006/article/details/84880018#comments https://www.promiseblog.cn 合計稅額 13.27 貨物名稱 (詳見銷貨清單) 受票方識

基於bootstrap table分頁資料及行內編輯匯出資料(一)

第一步,匯入相應的css和js檔案      <link href="~/Content/bootstrap.min.css" rel="stylesheet" />     <!-----swich按鈕需要的css檔案-->     <

十七 bootstrap-table tableExport 匯出xlsx格式表格

在[十六、bootstrap-table javascript匯出資料]中,開啟匯出的表格時,總會彈出一個提示窗 那麼,匯出xlsx格式的應該就沒問題了吧?!實驗如下,查詢tableExport.js資料 TableExport外掛依賴於jQu

結合bootstrap fileinput外掛Bootstrap-table表格外掛,實現檔案上傳、預覽、提交的匯入Excel資料操作流程

1、bootstrap-fileinpu的簡單介紹 在前面的隨筆,我介紹了Bootstrap-table表格外掛的具體專案應用過程,本篇隨筆介紹另外一個Bootstrap FieInput外掛的使用,整合兩者可以實現我們常規的Web資料匯入操作,匯入資料操作過程包括有上傳檔案,預覽資料,選擇並提交記錄等一系

在使用bootstrap-table匯出excel時遇到了問題:第一列顯示為on

使用bootstrap-table自帶的匯出excel時,頁面第一列為複選框,如圖: 此時匯出的excel會多出一列,且值為on,如圖: 解決辦法如下,直接上程式碼: exportOptions : { ignoreColumn: [0], fil

純JS匯出excel支援中文

JsonExportExcel 簡介 使用方法 1.引入js (dist目錄下JsonExportExcel.min.js) <script src="https://cuikangjie.github.io/JsonExportExcel/dist/Js