Импорт таблицы БД в Excel

kpp

Новичок
Импорт таблицы БД в Excel

Случалось ли кому - нибудь выгружать данные в иксель из таблицы БД?

Я делаю это при помощи разметки строк и столбцов примерно так :

"1"|"field1"|"field3"\n
"2"|"field1"|"field3"\n

Ячейки помещаются в кавычки, а строки разделяются знаком 'newline' , т.е. \n
Далее полученная строка записывается в файл с расширением .csv и уже в таблицу икселя добавляется при помощи стандартной процедуры импорта внешних данных.

Можно ли сделать как-то иначе, этот способ плох тем, что приходится перебирать каждую ячейку и каждую строку и размечать их. Самое же главное, что если попадается в какой-то ячейке слово с уже имеющимися кавычками, то всё перекашивается (чтобы этого не было приходится менять двойные кавычки в тексте на что-нибудь похожее)

Как избавиться от проблем с кавычками так, чтобы их не пришлось заменять на апостроф или ещё какие - нибудь знаки?
 

Фанат

oncle terrible
Команда форума
Можно ли сделать как-то иначе, этот способ плох тем, что приходится перебирать каждую ячейку и каждую строку и размечать их
ах, ах! какие сложности! просто умереть можно от переутомления!
если попадается в какой-то ячейке слово с уже имеющимися кавычками, то всё перекашивается
ну-да, ну-да.
экранирование кавычек - и вовсе непосильная задача.
написаь слово в кавычках в экселе, сохранить, как цсв, и посмотреть, что получилось внутри - это ж надо академиком быть, тобы догадаться.
 

kpp

Новичок
Автор оригинала: *****
просто умереть можно от переутомления!
значит я на правильном пути, это радует.

Поэкранирую, посмотрим что получится. Кстати, весёлая вещь http://phpfaq.ru/debug#intro , поучительная.

Ещё за долгое время писания скриптов появился вопрос. Каким текстовым редактором пользоваться для написания скриптов? Дримвивер считается "злом" (мягко говоря), а нотепад++ не может перекодировать из koi8-r в windows-1251 или в другую какую-нибудь, но подсветка синтаксиса в нём роскошная! Каким редактором пользоваться? (не хотел просто создавать по этому поводу темы новой, раз уж вопрос с кавычками так быстро решился)
 

Фанат

oncle terrible
Команда форума
лично я, за все время работы в пхп, ни разу не ощутил потребности в редакторе, которые умеет перекодировать русские кодировки.

Редактор мне нужен для работы с кодом.
Причем работаю я в той кодировке, которая мне удобна.
А перекодировать один раз при большой нужде, можно какой-нибудь отдельной от редакора утилитой
 

cDLEON

Онанист РНРСlub
лично я, за все время работы в пхп, ни разу не ощутил потребности в редакторе, которые умеет перекодировать русские кодировки.
А я ощутил...Когда рылся в чужом коде.
--
На данный момент использую PHPedit....
 

kpp

Новичок
Все наверное ждали этой мега функции. "Функция экспорта таблицы БД в Excel"


PHP:
function table_to_csv($db_name,$table_name,$link_connection){
	$query_result=mysql_query("SELECT * FROM $table_name");
	$list_fields=mysql_list_fields($db_name,$table_name,$link_connection);
	$fields_count=mysql_num_fields($list_fields);
	
	$result_str="";
	
	while($row=mysql_fetch_array($query_result)){
		$result_arr=array();
		for($i=0;$i<$fields_count;$i++){
			$result_arr[]="\"".str_replace("\n","",str_replace("\r","",str_replace("\"","'",$row[$i])))."\"";
		}
		$result_str.=join(";",$result_arr);
		$result_str.="\n";
	}
	
	$handle=fopen("backup.csv","w");
	$flag=fwrite($handle,$result_str);
	return $flag;
}
 

Sokil.Dmytro

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

Фанат

oncle terrible
Команда форума
я не думаю, чтобы кто-то ждал это произведение.
тем более, что в нем не произошло никаких улучшений по результатами обсуждения
 

kpp

Новичок
PHP:
function table_to_csv($db_name,$table_name,$link_connection){
	$query_result=mysql_query("SELECT * FROM $table_name");
	$list_fields=mysql_list_fields($db_name,$table_name,$link_connection);
	$fields_count=mysql_num_fields($list_fields);
	
	$result_str="";
	
	while($row=mysql_fetch_array($query_result)){
		$result_arr=array();
		for($i=0;$i<$fields_count;$i++){
			$result_arr[]="\"".str_replace("\"","\"\"",str_replace("\n","",str_replace("\r","",$row[$i])))."\"";
		}
		$result_str.=join(";",$result_arr);
		$result_str.="\n";
	}
	
	$handle=fopen("backup.csv","w");
	$flag=fwrite($handle,$result_str);
	return $flag;
}


Вот, теперь с учётом всех пожеланий. Теперь здесь правильно будут отображаться кавычки. Я написал кавычки и сохранил в csv, а там как не странно она выглядит как 2! кавычки.
Теперь это идеально работающий как часы скрипт. :)
 
Сверху