diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index 02260302eb..ad81f788a3 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -132,14 +132,27 @@ def export_query(): data = run(report_name, filters) data = frappe._dict(data) - columns = get_columns_dict(data.columns) - content = [] - for col in columns.values(): - content.append(col["label"]) + + result = [[]] + + # add column headings + for idx in range(len(data.columns)): + result[0].append(columns[idx]["label"]) + + # build table from dict + if isinstance(data.result[0], dict): + for row in data.result: + if row: + row_list = [] + for idx in range(len(data.columns)): + row_list.append(row[columns[idx]["fieldname"]]) + result.append(row_list) + else: + result = result + data.result from frappe.utils.xlsxutils import make_xlsx - xlsx_file = make_xlsx([content] + data.result, "Query Report") + xlsx_file = make_xlsx(result, "Query Report") frappe.response['filename'] = report_name + '.xlsx' frappe.response['filecontent'] = xlsx_file.getvalue() @@ -321,9 +334,9 @@ def get_columns_dict(columns): The keys for the dict are both idx and fieldname, so either index or fieldname can be used to search for a column's docfield properties """ - columns_dict = {} + columns_dict = frappe._dict() for idx, col in enumerate(columns): - col_dict = {} + col_dict = frappe._dict() # string if isinstance(col, basestring): diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 619e08fa1b..ebba451136 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -89,8 +89,9 @@ frappe.views.QueryReport = Class.extend({ }, me.report_doc.letter_head); }, true); - this.page.add_menu_item(__('Export'), function() { me.make_export(); }, - true); + this.page.add_menu_item(__('Export'), function() { + me.make_export(); + }, true); this.page.add_menu_item(__("Setup Auto Email"), function() { frappe.set_route('List', 'Auto Email Report', {'report' : me.report_name}); @@ -821,8 +822,6 @@ frappe.views.QueryReport = Class.extend({ } else if (data.file_format_type == "Excel") { - - me.wrapper.find(".results").toggle(false); try { var filters = me.get_values(true); } catch(e) {