Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Witam!
Szukam i szukam zaleźć nie mogę... więc proszę o wsparcie.
Mam plik Excela w którym są komórki A1 A2 A3 i oczywiście formuła A1+A2=A3, skożystałem z writera PhpExcel i działa z tym, że tworzy nowy plik od nowa a mi zależy by użytkownik za pomocą inputów wpisywał wartość A1 i A2, a następnie by trafiało to do pliku excela, no i dane trafiają lecz tworzony jest nowy plik i z formuły są nici. A nie mogę zapisać formuły na sztywno bo będzie często zmieniana. Możecie jakoś pomóc? Dołanczam kod writera:

require_once 'Excel/PHPExcel.php';
$PHPExcel = new PHPExcel();
PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_AdvancedValueBinder());
$PHPExcel = new PHPExcel();
$PHPExcel->getActiveSheet()->setCellValue('A1', '1000');
$PHPExcel->getActiveSheet()->setCellValue('A2', '100');
$writer = new PHPExcel_Writer_Excel2007($PHPExcel);
$writer = new PHPExcel_Writer_Excel2007($PHPExcel);
// zapisanie na dysku
$writer->save('raport finansowy.xlsx');

// wyslanie do przeglądarki
//$writer->save('php://output');

kod stworzony na podstawie tutorialu... oraz dokumentacji dołączonej do PhpExcel

Temat: Php edycja pliku excela

No ale ehm Ty przecież tworzysz nowy plik a nie otwierasz istniejący.
Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Absolutnie się z tobą zgadzam tak jak pisałem korzystam z tutoriala, niestety nie mogę znaleźć opisu edycji plikuTen post został edytowany przez Autora dnia 15.07.14 o godzinie 20:18

Temat: Php edycja pliku excela

Niedawno korzystałem z PHPExcel i z tego co pamiętam to masz w paczce także sample.
W samplach i doc na pewno znajdziesz to czego Ci tu brakuje.

//edit:
Sprawdziłem i w samplach masz to czego potrzebujesz.
Zamień

$PHPExcel = new PHPExcel();

na

$PHPExcel = PHPExcel_IOFactory::load("raport finansowy.xlsx");
Ten post został edytowany przez Autora dnia 16.07.14 o godzinie 10:21
Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Zrobiłem jak mówiłeś. I fakt zachowałem się jak noob kopiując i nie myśląc co robię...
Przeanalizowałem dokumentacje (jest bardzo obszerna) jednak napotkałem inny problem którego rozwiązania nie ma w dokumentacji. Mianowicie udaje się zmienić wartości komórek A1 i A2, a w komórce A3 nadal jest sumowanie dwóch poprzednich jednak wynik jest 0.
Jak sądzicie co może być przyczyną?Ten post został edytowany przez Autora dnia 17.07.14 o godzinie 08:14

Temat: Php edycja pliku excela

Sprawdziłem i działa. Może źle wpisałeś formułę ?

konto usunięte

Temat: Php edycja pliku excela

Adrian G.:
Zrobiłem jak mówiłeś. I fakt zachowałem się jak noob kopiując i nie myśląc co robię...
Przeanalizowałem dokumentacje (jest bardzo obszerna) jednak napotkałem inny problem którego rozwiązania nie ma w dokumentacji. Mianowicie udaje się zmienić wartości komórek A1 i A2, a w komórce A3 nadal jest sumowanie dwóch poprzednich jednak wynik jest 0.
Jak sądzicie co może być przyczyną?

zobacz co pokazuje excel w tej komórce, bo być może myśli że to co wpisałeś to tekst a nie formułaTen post został edytowany przez Autora dnia 17.07.14 o godzinie 08:52
Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Po koleji:
Tworze plik excela i komórkę A3 ustawiam na sumowanie komórek A1 i A2.
Nastepnie plik wędruje na serwer. Opalam stronę z kodem:

require_once 'Excel/PHPExcel.php';
require_once 'Excel/PHPExcel/IOFactory.php';
$PHPExcel = PHPExcel_IOFactory::load("raport finansowy.xlsx");
PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_AdvancedValueBinder());
$PHPExcel->getActiveSheet()->setCellValue('A1', '1000');
$PHPExcel->getActiveSheet()->setCellValue('A2', '500');
$writer = new PHPExcel_Writer_Excel2007($PHPExcel);

// zapisanie na dysku
$writer->save('raport finansowy.xlsx');

Pobieram plik i w A3 zamiast 1500 jest 0 a formuła sumowania się nie zmieniła.

Możliwe, że kodowanie musze dodać? Myślałem że liczby to traktuje jak liczby a nie znaki...

Temat: Php edycja pliku excela

Wykonałem Twój kod i mam wynik 1500.
Na pewno masz taką formułę w A3 ?
=A1+A2


i wywal ten setValueBinder oraz require_once 'Excel/PHPExcel/IOFactory.php' bo do niczego nie jest potrzebne.
Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Mam w A3 =SUMA(A1:A2)
gdy plik jest na kompie waży 4kb gdy otrzyma wartości z php waży 12kb, wartości zapisałem do zmiennych i vardump-em sprawdziłem typ (int) w komórkach również figurują jako liczby całkowite. A w A3 formuła jest nie zmienna.
Zmieniłem formułę na jaką ty masz i nadal to samo. Ten post został edytowany przez Autora dnia 17.07.14 o godzinie 13:10

Temat: Php edycja pliku excela

na sum także działa dobrze.
A co dostajesz tu:
echo $PHPExcel->getActiveSheet()->getCellByColumnAndRow(0, 3)->getCalculatedValue(); 
Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Teraz już zgłupiałem wyświetla poprawny wynik a w excelu jest 0...

konto usunięte

Temat: Php edycja pliku excela

Adrian G.:
Teraz już zgłupiałem wyświetla poprawny wynik a w excelu jest 0...

Może w Excelu jest jakaś opcja w stylu "nie obliczaj formuł automatycznie" czy coś?!?
Adrian Głowacki

Adrian Głowacki Żołnierz, KPW
Świonoujście

Temat: Php edycja pliku excela

Pracuje na linuxie i korzystam z libre office, sprawdziłem na windowsie i po włączeniu trybu edycji w A3 pojawia się prawidłowy wynik, ale dopóki tego nie włączę pojawia się 0

Bingo działa! faktycznie należało w dokumencie włączyć opcję automatycznego obliczania formuł. Dziwy natury.

Bardzo dziękuje wam za pomoc. Ten post został edytowany przez Autora dnia 17.07.14 o godzinie 13:59



Wyślij zaproszenie do