2011-11-10 4 views
1

파일 내가 선택한 레코드를 내보낼 수 있습니다 사용자와 같은 기능을 추가 할 선택한 레코드를 내 보내야합니다. 사전수출 기록은 내가 웹 응용 프로그램을 만들었

+2

PHPExcel http://phpexcel.codeplex.com/을 사용할 수 있지만 귀하의 질문은 너무 공개적입니다 ... – Molochdaa

+0

가능한 복제 [내보내기 MySQL의 결과를 엑셀] (http://stackoverflow.com/questions/1475441/export-mysql-result-to-excel) – hakre

+0

@ hakre - 그 질문에 중복하지 마십시오. 지나치게 복잡한 특정 스크립트 용입니다. – evan

답변

6

외부 라이브러리를 다운로드 할 필요가 없습니다. 필요한 모든 것이 PHP에 이미 내장되어 있습니다.

단계 :

    당신이 출력
    하려는 행을 얻을 PHP에서
  1. 마 쿼리 당신은
  2. 사용 fputcsv() 한 번에 행 하나를 얻기 위해 사용 mysql_fetch_array() 또는 mysql_fetch_assoc()SELECT * FROM table WHERE id IN (1,2,...)
  3. 을 사용할 수 있습니다 csv로 끝나는 파일로 출력하려면 - 데이터를 올바르게 이스케이프 처리합니다.

http://www.php.net/manual/en/function.mysql-fetch-array.php
http://php.net/manual/en/function.fputcsv.php

Excel에서 파일을 읽을 수 있습니다.

fputcsv에 대한 기본값을 재정 의하여 구분 기호 탭을 사용하면 Excel에서 파일을 더 쉽게 읽을 수 있습니다. 쉼표 (기본값)를 사용하는 경우 Excel 가져 오기에서 쉼표를 구분 기호로 선택해야 할 수 있습니다.다음, 당신은 "OUTFILE로 선택을 사용할 수 있어야

$rows; // predefined 
$filename = 'webdata_' . date('Ymd') . '.csv'; 

header("Content-Disposition: attachment; filename=\"$filename\""); 
header("Content-Type: application/octet-stream"); 
// that indicates it is binary so the OS won't mess with the filename 
// should work for all attachments, not just excel 

$out = fopen("php://output", 'w'); // write directly to php output, not to a file 
foreach($rows as $row) 
{ 
    fputcsv($out, $row); 
} 
fclose($out); 
+0

고맙습니다. .. – SB24

+0

PHP의 제 3 년 동안 저는 실제로 fputcsv를 사용하지 않았습니다. 일반적으로 실제 파일을 만드는 것을 피하기 때문입니다.하지만 이것은 아마도 좋은 해결책. 그러나 excel은 쉼표와는 반대로 탭을 사용하여 문제가 없을 것이라고 생각합니다. 자동으로 구분 기호를 감지해야하므로 구성 변경이 필요하지는 않습니다. 그러나 다시, 마일리지는 다를 수 있습니다. 그래도 아주 좋은 대답 :-) – WhiskeyTangoFoxtrot

+1

Excel은 탭으로 더 잘합니다. csv는 쉼표로 구분 된 값을 나타냅니다. 예제를 참조하십시오. 먼저 파일로 출력 할 필요가 없습니다. PHP 표준 출력으로 바로 출력 할 수 있습니다. – evan

1

에서

감사합니다 당신은 설치하고 엑셀에서 엑셀 파일뿐만 아니라 수출 데이터를 가져 오기 위해 아주 좋은 PHP의 엑셀 라이브러리를 사용할 수 있습니다. 여기

상세 정보 : 그게 내가 말할 수있는, 그래서 http://phpexcel.codeplex.com/

그렇지 않으면 질문 자체가 좀 애매하다. :/

+0

대단히 감사합니다. – SB24

0

데이터를 CSV 형식으로 브라우저에 보내면 (즉, \ t로 결과 집합 배열의 각 항목을 implode()하고 각 줄을 \ n으로 구분할 경우) Excel에서 쉽게 사용할 수있는 형식으로 변환 할 수 있습니다 문서가로드 될 때

그러나로드하는 문서가 Excel 파일이므로 Excel에서 파일을로드한다는 것을 브라우저에 알려야합니다. 과 같이 콘텐츠 형식 및 내용 처리 헤더를 제공하여 그렇게 :

header('Content-type: application/vnd.ms-excel'); 
header("Content-Disposition: attachment; filename=exportExcel.xls"); 

당신이 CSV'd 텍스트를 보내기 전에 헤더() 함수를 호출 확인하시기 바랍니다.

참고 : 내 경험상 필드에 쉼표가 들어 있기 때문에 문제가 발생했기 때문에 \ t (탭)을 사용하여 쉼표가 아닌 각 필드를 구분했습니다. 당신의 특별한 경우는 아닙니다.

+0

참고로이 형식은 멋진 형식이 아닙니다. 또는 테이블 복싱. 카밀의 도서관이 그것을 제공 할 수도 있습니다. 내 방법은 단순한 직선 내보내기 만 수행합니다. – WhiskeyTangoFoxtrot

+0

대단히 감사합니다. – SB24

+0

오신 것을 환영합니다! stackoverflow에 오신 것을 환영합니다 - 좋은 답변과 허용 된 답변에 투표하는 것을 잊지 마십시오. :-) – WhiskeyTangoFoxtrot

0

는 MySQL 데이터베이스는 웹 호스트와 동일한 서버에 있다고 가정 : 여기

이미 설정 행이 가정 작업 예제 "mysql의 메소드. 사람들이 이런 식으로 PHP를 사용하여 파일을 다운로드

SELECT * FROM people INTO OUTFILE '/www/your/output/directory/output.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

을 그리고 당신은 할 수 있습니다 : http://dev.mysql.com/doc/refman/5.1/en/select-into.html

당신은 구문의 종류를 사용하여 (엑셀에서 열립니다) CSV 파일을 만들 수 있습니다

header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=/www/your/output/directory/output.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

이 마지막 부분은 다른 게시물에서 오는 것입니다 ->create csv file

관련 문제