Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Export an array as downladable Excel CSV
- * @param array $header
- * @param array $data
- * @param string $filename
- */
- function toCSV($header, $data, $filename) {
- $sep = "t";
- $eol = "n";
- $csv = count($header) ? '"'. implode('"'.$sep.'"', $header).'"'.$eol : '';
- foreach($data as $line) {
- $csv .= '"'. implode('"'.$sep.'"', $line).'"'.$eol;
- }
- header('Content-Description: File Transfer');
- header('Content-Type: application/vnd.ms-excel');
- header('Content-Disposition: attachment; filename='.$filename.'.csv');
- header('Content-Transfer-Encoding: binary');
- header('Expires: 0');
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
- header('Pragma: public');
- header('Content-Length: '. strlen($csv));
- echo chr(255) . chr(254) . mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
- exit;
- }
- >>> open('oldmac.csv', 'rb').read()
- 'xefxbbxbfOld MacDonald had a farm,xc3x88xc3x8cxc3x89xc3x8dxc3x98rn'
- >>> ^Z
- <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
- <%
- Response.Clear();
- Response.ContentType = "text/csv";
- Response.Charset = "utf-8";
- Response.AddHeader("Content-Disposition", "attachment; filename=excelTest.csv");
- Response.Write("uFEFF");
- // csv text here
- %>
- <html>
- <meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
- <table>
- <tr>
- <th>id</th>
- <th>name</th>
- </tr>
- <tr>
- <td>4</td>
- <td>Hélène</td>
- </tr>
- </table>
- </html>
- def handlePersoonListExport(request):
- # Retrieve a query_set
- ...
- template = loader.get_template("export.csv")
- context = Context({
- 'data': query_set,
- })
- response = HttpResponse()
- response['Content-Disposition'] = 'attachment; filename=export.csv'
- response['Content-Type'] = 'text/csv; charset=utf-8'
- response.write("xEFxBBxBF")
- response.write(template.render(context))
- return response
- echo "xEFxBBxBF";
- <%
- require 'fastercsv'
- fcsv_options = {
- :row_sep => "n",
- :col_sep => params[:delimiter],
- :force_quotes => @export_config.force_quotes,
- :headers => @export_columns.collect { |column| format_export_column_header_name(column) }
- }
- data = FasterCSV.generate(fcsv_options) do |csv|
- csv << fcsv_options[:headers] unless params[:skip_header] == 'true'
- @records.each do |record|
- csv << @export_columns.collect { |column|
- # Converte ogni campo in UTF-16 scartando il BOM, richiesto per Excel (> 2003 ?)
- Iconv.conv('UTF-16', 'UTF-8', get_export_column_value(record, column))[2..-1]
- }
- end
- end
- -%><%= data -%>
- Iconv.conv('UTF-16', 'UTF-8', get_export_column_value(record, column))[2..-1]
Add Comment
Please, Sign In to add comment