Экспортируйте таблицу из html, чтобы преуспеть с помощью js - PullRequest
0 голосов
/ 16 апреля 2019

Не могу передать параметр ориентации ландшафта, чтобы преуспеть, хотя может передать параметр масштабирования просто отлично

Пытался включить @page solution, пытался передать параметр ориентации страницы, пробовал различные примеры и решения. PS: работая с динамической таблицей на стороне клиента, сама таблица проходит нормально со своими значениями и даже передачей параметров масштабирования, проблема с ориентацией Отредактированный код, начало было обрезано из-за проверки кода

var tableToExcel = (function() {
            var uri = 'data:application/vnd.ms-excel;base64,',
                template = '<html  xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +
                    ' xmlns="http://www.w3.org/TR/REC-html40">' +
                    '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head>' +
                    '<!--[if gte mso 9]>' +
                    '<xml><x:ExcelWorkbook>' +

                    '<x:ExcelWorksheets>' +
                    '<x:ExcelWorksheet>' +
                    '<x:Name>{worksheet}' +
                    '</x:Name>' +
                    '<x:WorksheetOptions>' +


                    '<x:Zoom>100</x:Zoom>'+

                    '<x:DisplayGridlines/>' +
                    '</x:WorksheetOptions>' +
                    '</x:ExcelWorksheet>' +
                    '</x:ExcelWorksheets>' +
                    '</x:ExcelWorkbook>' +
                    '</xml><![endif]-->' +
                    '</head><body><table><caption>{table}</caption></table></body></html>'
            base64 = function(s) {
                return window.btoa(unescape(encodeURIComponent(s)))
            },
                format = function(s, c) {
                    return s.replace(/{(\w+)}/g, function(m, p) {
                        return c[p];
                    })
                }
            return function(table, name) {
                if (!table.nodeType) table = document.getElementById("examplecopy")
                var ctx = {
                    worksheet: name || 'Worksheet',
                    table: table.innerHTML
                }
                window.location.href = uri + base64(format(template, ctx))
            }
        })()

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019
<script>

    var tableToExcel = (function() {

        var uri = 'data:application/vnd.ms-excel;base64,',

            template = '<html xmlns:v="urn:schemas-microsoft-com:vml"xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40">'+
            '<head> <meta http-equiv=Content-Type content="text/html; charset=utf-8"> <meta name=ProgId content=Excel.Sheet> <meta name=Generator content="Microsoft Excel 11">'+
           ' <!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>Pat Willener</o:Author><o:Company>Good Day Books</o:Company>'+
      '  </o:DocumentProperties><o:OfficeDocumentSettings><o:RelyOnVML/><o:AllowPNG/></o:OfficeDocumentSettings>'+
      '  </xml><![endif]-->'+
       ' <style><!--table {mso-displayed-decimal-separator:"\.";mso-displayed-thousand-separator:"\,";}  @page {mso-header-data:"&CInventory";  mso-footer-data:"Page &P of &N";'+
           ' margin:.31in 0in .31in 0in;  mso-header-margin:0in;  mso-footer-margin:0in;  mso-page-orientation:landscape;}  --></style>'+
       ' <!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Inventory</x:Name><x:WorksheetOptions><x:Print><x:ValidPrinterInfo/>'+
       ' <x:PaperSizeIndex>9</x:PaperSizeIndex><x:HorizontalResolution>600</x:HorizontalResolution><x:VerticalResolution>600</x:VerticalResolution></x:Print><x:Selected/>'+
       ' <x:Panes><x:Pane><x:Number>1</x:Number><x:ActiveRow>1</x:ActiveRow></x:Pane></x:Panes><x:ProtectContents>False</x:ProtectContents><x:ProtectObjects>False</x:ProtectObjects>'+
        '<x:ProtectScenarios>False</x:ProtectScenarios></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets><x:WindowHeight>8835</x:WindowHeight><x:WindowWidth>15180</x:WindowWidth>'+
       ' <x:WindowTopX>120</x:WindowTopX><x:WindowTopY>105</x:WindowTopY><x:ProtectStructure>False</x:ProtectStructure><x:ProtectWindows>False</x:ProtectWindows></x:ExcelWorkbook>'+
        '</xml><![endif]-->'+

       ' <title>Inventory</title>'+

                '</head><body><table><caption>{table}</caption></table></body></html>'
        base64 = function(s) {
            return window.btoa(unescape(encodeURIComponent(s)))
        },
            format = function(s, c) {
                return s.replace(/{(\w+)}/g, function(m, p) {
                    return c[p];
                })
            }
        return function(table, name) {
            if (!table.nodeType) table = document.getElementById("examplecopy")
            var ctx = {
                worksheet: name || 'Worksheet',
                table: table.innerHTML
            }
            window.location.href = uri + base64(format(template, ctx))
        }
    })()

</script>

этот работал для меня

0 голосов
/ 16 апреля 2019
  <script type="text/javascript">
    var tableToExcel = (function() {
      var uri = 'data:application/vnd.ms-excel;base64,'
        , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'
        , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
        , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
      return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
        window.location.href = uri + base64(format(template, ctx))
      }
    })()
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...