Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

html export table to excel right to left

I am trying to export a table to excel, I can do it but the sheet is left to right, I want it to be right to left. of course I can do it manually (Page Layout -> Sheet right-to-left), but I want it to be automatically. I'm using for the exporting jquery.table2excel.js:

//table2excel.js
(function($, window, document, undefined) {
    var pluginName = "table2excel",
        defaults = {
            exclude: ".noExl",
            name: "Table2Excel"
        };

    // The actual plugin constructor
    function Plugin(element, options) {
        this.element = element;
        // jQuery has an extend method which merges the contents of two or
        // more objects, storing the result in the first object. The first object
        // is generally empty as we don't want to alter the default options for
        // future instances of the plugin
        this.settings = $.extend({}, defaults, options);
        this._defaults = defaults;
        this._name = pluginName;
        this.init();
    }

    Plugin.prototype = {
        init: function() {
            var e = this;
            e.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>";
            e.template += "<x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions>";
            e.template += "<x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>";
            e.tableRows = "";

            // get contents of table except for exclude
            $(e.element).find("tr").not(this.settings.exclude).each(function(i, o) {
                e.tableRows += "<tr>" + $(o).html() + "</tr>";
            });
            this.tableToExcel(this.tableRows, this.settings.name);
        },
        tableToExcel: function(table, name) {
            var e = this;
            e.uri = "data:application/vnd.ms-excel;base64,";
            e.base64 = function(s) {
                return window.btoa(unescape(encodeURIComponent(s)));
            };
            e.format = function(s, c) {
                return s.replace(/{(\w+)}/g, function(m, p) {
                    return c[p];
                });
            };
            e.ctx = {
                worksheet: name || "Worksheet",
                table: table
            };
            window.location.href = e.uri + e.base64(e.format(e.template, e.ctx));
        }
    };

    $.fn[pluginName] = function(options) {
        this.each(function() {
            if (!$.data(this, "plugin_" + pluginName)) {
                $.data(this, "plugin_" + pluginName, new Plugin(this, options));
            }
        });

        // chain jQuery functions
        return this;
    };

})(jQuery, window, document);

I think its something in the WorksheetOptions area, but I can't figure out what.

The HTML code is simple, just filling the table, and using TableSorter.js to enable sorting.

Thanks

like image 376
idan Avatar asked Feb 16 '15 15:02

idan


People also ask

How do I export data from HTML table to Excel?

To convert HTML table data into excel, we need to use the SheetJS library. Using SheetJs we can easily convert our table data into an Xls file. We can download the js file from Github or directly use the CDN hosted file. We are done with HTML markup and import Sheetjs library.

How do you export download the HTML table to Excel using JavaScript?

JavaScript Code: tableID – Required. Specify the HTML table ID to export data from. filename – Optional. Specify the file name to download excel data.

How do I export a table to Excel?

Right-click on any cell in the table. Select Export Table. You can either Export to CSV or Export to Excel.


1 Answers

 <x:WorksheetOptions><x:DisplayRightToLeft/> </x:WorksheetOptions>

You can see more options:here

like image 133
DUKEiLL Avatar answered Oct 13 '22 00:10

DUKEiLL