Я всегда использую window functions
для расчета процентов:
Ссылка: http://www.mysqltutorial.org/mysql-window-functions/
Пример : http://sqlfiddle.com/#!17/66373/6
SELECT
user,
product,
c,
sum(c) over(partition by usr) sc,
c / sum(c) over(partition by usr) per
FROM (
SELECT usr, product, count(*) c
FROM tablex
GROUP BY usr, product
) t
CREATE TABLE tablex (
usr varchar(32),
product varchar(32)
);
INSERT INTO tablex VALUES ('a', 'x');
INSERT INTO tablex VALUES ('a', 'y');
INSERT INTO tablex VALUES ('a', 'y');
INSERT INTO tablex VALUES ('a', 'y');
INSERT INTO tablex VALUES ('a', 'z');
INSERT INTO tablex VALUES ('a', 'z');
INSERT INTO tablex VALUES ('a', 'z');
INSERT INTO tablex VALUES ('a', 'z');
INSERT INTO tablex VALUES ('a', 'z');
INSERT INTO tablex VALUES ('b', 'x');
INSERT INTO tablex VALUES ('b', 'x');
INSERT INTO tablex VALUES ('b', 'x');
INSERT INTO tablex VALUES ('b', 'y');
INSERT INTO tablex VALUES ('b', 'y');
INSERT INTO tablex VALUES ('b', 'y');
INSERT INTO tablex VALUES ('b', 'y');
INSERT INTO tablex VALUES ('b', 'y');
INSERT INTO tablex VALUES ('b', 'y');
INSERT INTO tablex VALUES ('b', 'z');
INSERT INTO tablex VALUES ('b', 'z');
INSERT INTO tablex VALUES ('b', 'z');
INSERT INTO tablex VALUES ('b', 'z');
INSERT INTO tablex VALUES ('b', 'z');
I've discovered that adding the following, under the xml declaration in my generated Excel file, ensures Excel opens the file with an xml file extension (rather than the web browser):
<?mso-application progid=\"Excel.Sheet\"?>
I'm also setting the following headers in php:
// deliver header (as recommended in php manual)
header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
header('Content-Disposition: attachment; filename="' . $filename . '.xml"');
Используйте Spreadsheet_Excel_Writer из PEAR
или
Запишите файл в формат CSV .
Но используйте представление Microsoft Excel о csv: точка с запятой (;) в качестве разделителя
Вы также отключаете диалоговое окно, используя regedit
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security]
“ExtensionHardening”=dword:00000000
файл имеет другой формат, расширение файла
Пробовали ли вы сохранить файл с другим расширением? Например, "foo.xlsx" вместо "foo.xls".