2014-12-10 3 views
1

Я работаю на веб-сайте, где мне нужно сделать файл excel или, по крайней мере, файл csv, который открывается в excel. Я пробовал много вещей. Я искал решения для google, stackoverflow и т. Д. Но все, что я нахожу, не работает для меня. Я попробовал jQuery-решения, и я пробовал PHP-решения.Экспорт в excel или csv

JSFiddle: http://jsfiddle.net/terryyounghk/KPEGU/

Когда я использую эту скрипку, чтобы сделать CSV вывод является:

Example of the csv ouput

Я хочу выход быть в отдельно colums, а не в одном.

Здесь также РНР решение, которое я попробовал:

header("Content-type: application/vnd.ms-excel"); 
    header("Content-Disposition: attachment;Filename=document_name.xls"); 

    echo "<html>"; 
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">"; 
    echo "<body>"; 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<td>Henk</td>"; 
    echo "<td>Henk2</td>"; 
    echo "</tr>"; 
    echo "<tr>"; 
    echo "<td>bob</td>"; 
    echo "<td>bob2</td>"; 
    echo "</tr>"; 
    echo "</table>"; 
    echo "</body>"; 
    echo "</html>"; 

В этом выходы:

example of php output

Здесь выход в правых столбцах и строках. Но почему-то я не могу получить сетки.

Это всего лишь 2 примера тонны, которые я пробовал. Кто-нибудь знает, как это исправить?

ответ

1

В JsFiddle примере вы - при условии изменения colDelim = '","' к colDelim = '";"', поскольку она нуждается в разделенных запятой значение ;, чтобы сделать строку падение в различных клетках.

Updated JsFiddle

+0

Благодарим за помощь! – SemperMemento

+0

Добро пожаловать! – urbz

0

я могу увидеть, где ваш идти с задумываетесь об использовании таблиц сделать форматирование, но CSV являются запятыми.

Лучший способом я нашел использовать массивы следующим образом:

// setup array. Note null values to create empty cells 
$list = array( 
    array('First row', NULL, 'some_data', NULL), 
    array('Second row', 'some data', NULL, 'some data'), 
); 

// set header types 
header("Content-type: text/csv"); 
header("Cache-Control: no-store, no-cache"); 
header('Content-Disposition: attachment; filename="most_popular-'.$_POST['start_date'].'-'.$_POST['end_date'].'.csv"'); 

// tell php to open the page as an output (download) 
$outstream = fopen("php://output",'w'); 

// loop through and put each array row into the csv, comma seperated. 
foreach($list as $row) 
{ 
    fputcsv($outstream, $row, ','); 
} 

exit; 

Просто помните, что каждая строке в массиве нужна точно так же, как и другие в противном случае цикл для создания CSV-файла будет получить очень смущенный.

0
**Try this** 




<?php 
error_reporting(E_ERROR); 
include("dbConnect.inc.php"); 
//$ip = $_SERVER['HTTP_CLIENT_IP 
    $select_table=mysql_query("SELECT * FROM `key_cat`"); 
    $setExcelName="Keyword_reports"; 
header('Content-Type: text/csv'); 
header('Content-Disposition: attachment;filename='.$setExcelName.'.csv'); 
/* 
$setExcelName="Keywords"; 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=".$setExcelName."_Reoprt.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
*/ 
$rows = mysql_fetch_assoc($select_table); 
if($rows) 
{ 
getcsv(array_keys($rows)); 
} 
while($rows) 
{ 
getcsv($rows); 
$rows = mysql_fetch_assoc($select_table); 
} 
// get total number of fields present in the database 
function getcsv($no_of_field_names) 
{ 
$separate = ''; 
// do the action for all field names as field name 
foreach ($no_of_field_names as $field_name) 
{ 
if (preg_match('/\\r|\\n|,|"/', $field_name)) 
{ 
$field_name = '' . str_replace('', $field_name) . ''; 
} 
echo $separate . $field_name; 

//sepearte with the comma 
$separate = ','; 
} 

//make new row and line 
echo "\r\n"; 

} 


?> 
Смежные вопросы