powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHPExcel библиотека
7 сообщений из 7, страница 1 из 1
PHPExcel библиотека
    #39182402
l-freeman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, знатоки

занимаюсь гавнокодерством, переношу данные с запроса к оракл БД в ексель, и наткнулся на проблему:

в одной столбце результирующего сета с БД находятся числовые значение, которые состоят из 16 цифр, к примеру:
"1234567891011121"

этот набор цифр с БД возвращается в формате строка, но при переносе в ексель получается еспоненциальное число, и последний символ отбрасывается:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
<?php

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


$conn = oci_connect("temp", "temp", "temp/temp");


if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}


require_once dirname(__FILE__) . '/../Classes/PHPExcel.php';



$sql = "select to_char('1234567891011121') t1
		from dual
		union all
		select to_char('1234567891011122') t1
		from dual
		";


$stid = oci_parse($conn, $sql);

oci_execute($stid);


$objPHPExcel = PHPExcel_IOFactory::load('temp.xlsx');
$objPHPExcel->getSheet(0);


	$i = 0;	
	while (oci_fetch($stid)) {
	
	
	for ($start_row=0;$start_row<19;$start_row++){
			$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($start_row, $i+2, oci_result($stid,$start_row+1));
		}

	

	

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('read2.php', 'temp_result.xlsx', __FILE__));	

oci_free_statement($stid);
oci_close($conn);




?>



и в итоге получаю вот такую вот лобуду: 1,23457E+15


пробовал ставить формат поля в загружаемом файле - текстовый, strval для oci_result, ничего не помогает



я так понимаю, ексель производит устранение ошибок, когда число сохранено как текст, но как это изменить?

может кто то сталкивался, помогите, измаялся

заранее спасибо
...
Рейтинг: 0 / 0
PHPExcel библиотека
    #39182427
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор$objPHPExcel->getActiveSheet()
->getStyle('A1')
->getNumberFormat()
->setFormatCode(
PHPExcel_Style_NumberFormat::FORMAT_TEXT
);
...
Рейтинг: 0 / 0
PHPExcel библиотека
    #39182444
l-freeman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow,
в самом файле ексель, который через лоадер загружается, поле имеет формат - "Текстовое"


но попробовал, изменений нет
как был експоненциальный формат, так и остался:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$objPHPExcel = PHPExcel_IOFactory::load('Foxtrot_clients.xlsx');
$objPHPExcel->getSheet(0);

$objPHPExcel->getActiveSheet()
->getStyle('A2')
->getNumberFormat()
->setFormatCode(
PHPExcel_Style_NumberFormat::FORMAT_TEXT
);



ЗЫ у меня А1 - это ячейка, которая содержит шапку, соответственно смотрел для А2
...
Рейтинг: 0 / 0
PHPExcel библиотека
    #39182447
l-freeman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так думаю, помогло бы что то на подобии специальной вставки, но как это реализовано в библиотеке, и реализовано ли вообще - не знаю
...
Рейтинг: 0 / 0
PHPExcel библиотека
    #39182457
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
$objPHPExcel->getCellByColumnAndRow($start_row, $i+2)->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
...
Рейтинг: 0 / 0
PHPExcel библиотека
    #39182458
l-freeman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
l-freemanScareCrow,
в самом файле ексель, который через лоадер загружается, поле имеет формат - "Текстовое"


но попробовал, изменений нет
как был експоненциальный формат, так и остался:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$objPHPExcel = PHPExcel_IOFactory::load('Foxtrot_clients.xlsx');
$objPHPExcel->setActiveSheetIndex(0);

$objPHPExcel->getActiveSheet()
->getStyle('A2')
->getNumberFormat()
->setFormatCode(
PHPExcel_Style_NumberFormat::FORMAT_TEXT
);



ЗЫ у меня А1 - это ячейка, которая содержит шапку, соответственно смотрел для А2
...
Рейтинг: 0 / 0
PHPExcel библиотека
    #39182516
l-freeman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu
Код: php
1.
$objPHPExcel->getCellByColumnAndRow($start_row, $i+2)->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);




спасибо добрый человек


помогло

только если кто то будет юзать, $objPHPExcel-> getActiveSheet() ->getCellByColumnAndRow($start_row, $i+2)->setValueExplicit
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHPExcel библиотека
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]