Excel-ൽ നിന്ന് php-ലേക്ക് ഡാറ്റ അപ്‌ലോഡ് ചെയ്യുന്നു. PHP-യിൽ നിന്ന് Excel-ലേക്ക് ടാബുലാർ ഡാറ്റ കൈമാറുന്നതിനുള്ള എളുപ്പവഴി. MySQL-ൽ നിന്ന് PHP-യിലെ Excel-ലേക്ക് ഡാറ്റ എക്സ്പോർട്ട് ചെയ്യുക

(mysql ഡാറ്റാബേസിൽ നിന്ന് ലഭിച്ച ഡാറ്റ) വിജയിക്കാൻ. ഞാൻ Zend ഫ്രെയിംവർക്ക് ഉപയോഗിക്കുന്നു. Excel-ലേക്ക് കയറ്റുമതി ചെയ്യുന്നതിന് മുമ്പ് എനിക്ക് എൻ്റെ ഡാറ്റയിൽ ചില മാറ്റങ്ങൾ വരുത്തേണ്ടതുണ്ട്. വാസ്തവത്തിൽ, എനിക്ക് യഥാർത്ഥത്തിൽ പ്രതിമാസ ക്യാഷ് ബുക്ക് സൃഷ്ടിക്കേണ്ടതുണ്ട്.

ഞാൻ ഒരുപാട് രേഖകൾ വായിച്ചു, പക്ഷേ എന്നെത്തന്നെ ഒരു കുഴപ്പത്തിൽ കണ്ടെത്തി. എങ്ങനെ തുടങ്ങണമെന്ന് എനിക്ക് ശരിക്കും അറിയില്ല. എനിക്ക് ശരിക്കും പിയർ ആവശ്യമുണ്ടോ? എനിക്ക് ഏതെങ്കിലും ക്ലാസ് ലൈബ്രറി ലോഡ് ചെയ്യേണ്ടതുണ്ടോ? ഇതിനൊരു എളുപ്പവഴിയില്ലേ?

മുൻകൂർ നന്ദി

PHPExcel ലൈബ്രറി ഉപയോഗിക്കാൻ ഞാൻ നിർദ്ദേശിക്കുന്നു. ഇത് ശരിക്കും ശക്തമാണ്, ഒന്നിലധികം ഫോർമാറ്റുകൾ പിന്തുണയ്ക്കുന്നു, വിഷ്വൽ ഫോർമാറ്റിംഗ് ചെയ്യാൻ കഴിയും, ഉപയോഗിക്കാൻ എളുപ്പമാണ്.

നിങ്ങൾക്ക് അവരുടെ വെബ്‌പേജിൽ ഇതിനെക്കുറിച്ച് കൂടുതൽ വായിക്കാം: http://phpexcel.codeplex.com/, (PHPExcel ഇതിനകം തന്നെ https://github.com/PHPOffice/PHPExcel എന്നതിലേക്ക് മാറ്റി)

ഉപയോഗ ഉദാഹരണം:

$objPHPExcel = പുതിയ PHPExcel(); /** നിങ്ങൾക്ക് നിരവധി പ്രോപ്പർട്ടികൾ സജ്ജീകരിക്കാം */ $objPHPExcel->getProperties()->setCreator("എൻ്റെ കമ്പനി") ->setLastModifiedBy("John Doe") ->setTitle("വാർഷിക റിപ്പോർട്ട്") ->setSubject("വിൽപ്പനകൾ) ") ->setDescription("ജോൺ ഡോയുടെ വാർഷിക വിൽപ്പന റിപ്പോർട്ട്") ->setCategory("ഫിനാൻസ്"); /** ഷീറ്റുകളിൽ ഒന്ന് തിരഞ്ഞെടുക്കുക */ $activeSheet = $objPHPExcel->setActiveSheetIndex(0); /** സെല്ലിൻ്റെ മൂല്യം സജ്ജീകരിക്കുക */ $activeSheet->setCellValue("A1", "ബഹുവചനം");

എക്സൽ ഫയലുകൾ വായിക്കുക, വിഷ്വൽ ശൈലികൾ സജ്ജീകരിക്കുക, ഗ്രാഫുകൾ സൃഷ്‌ടിക്കുക, എക്‌സ്‌പ്രഷനുകൾ എന്നിവയും അതിലേറെയും നിങ്ങൾക്ക് തീർച്ചയായും ചെയ്യാനാകും.

ഞാൻ MySQL-ൽ നിന്ന് ഡാറ്റ എടുക്കുന്ന ഒരു 94 വരി ഇൻവെൻ്ററി വേരിയേഷൻ റിപ്പോർട്ട് എഴുതി (ഒരു ടേബിളിന് 6kb + റെക്കോർഡുകൾ), MySQL ഡാറ്റയിൽ നിന്ന് ഒരു മൾട്ടിഡൈമൻഷണൽ അറേ സൃഷ്‌ടിക്കുക, ഒന്നിലധികം ടേബിളുകളിൽ നിന്ന് വലിച്ചിടുക, തുടർന്ന് എല്ലാം ഒരു വരിയിലേക്ക് വലിച്ചെറിയുകയും .xls സൃഷ്ടിക്കുകയും ചെയ്യുന്നു:

വിപുലീകരണങ്ങൾ ആവശ്യമില്ല.

Excel ഇല്ലാതെ .xls എങ്ങനെ തുപ്പണം എന്ന് എനിക്ക് ഇതുവരെ മനസ്സിലായിട്ടില്ല എന്നത് മാത്രമാണ് മുന്നറിയിപ്പ്, ഡാറ്റ കേടായേക്കാം എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു - കൂടാതെ ഫോർമാറ്റിംഗ് അല്ലെങ്കിൽ ഡാറ്റ "കയറ്റുമതി" ചെയ്യുന്നതിനേക്കാൾ സങ്കീർണ്ണമായ ഒന്നും ചെയ്യാൻ ഞാൻ ശ്രമിച്ചിട്ടില്ല, ഫയൽ/ഡാറ്റ തീർച്ചയായും ശരിയാണ്, എന്നാൽ ഇത് Excel-ൽ നിന്ന് ഒരു മുന്നറിയിപ്പ് സൃഷ്ടിക്കുന്നു.

എഡിറ്റ്: "സെറ്റപ്പ്", "ഡമ്പ്" എന്നിവ ഇനിപ്പറയുന്നവയെ സൂചിപ്പിക്കുന്നുവെന്ന് ഞാൻ ശ്രദ്ധിക്കണം: daniweb.com

നിങ്ങൾക്ക് phpexcel ലൈബ്രറി ഉപയോഗിക്കാം. വ്യത്യസ്ത സ്പ്രെഡ്ഷീറ്റ് ഫയൽ ഫോർമാറ്റുകളിൽ നിന്ന് എഴുതാനും വായിക്കാനും ഇത് നിങ്ങളെ അനുവദിക്കുന്നു

zend ഏകീകരണത്തിനായി നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന ലിങ്കിൻ്റെ സഹായം തേടാം.

എക്സലിനായി ഇറക്കുമതി ചെയ്യാവുന്ന ഫോർമാറ്റ് ഉണ്ടാക്കാൻ നിങ്ങൾക്ക് CSV ഉപയോഗിക്കാം. ഇതാണ് ഏറ്റവും എളുപ്പമുള്ള വഴി.

CSV ഇതുപോലെ കാണപ്പെടുന്നു:

"എൻ്റെ ആദ്യ സെൽ ഉള്ളടക്കം", "എൻ്റെ രണ്ടാമത്തെ സെൽ ഉള്ളടക്കം", "എൻ്റെ മൂന്നാം സെൽ ഉള്ളടക്കം" "രണ്ടാം വരി, ആദ്യ സെൽ ഉള്ളടക്കം", "etc", "etc

ഓരോ വരിയും ഒരു Excel സ്ട്രിംഗിനെ പ്രതിനിധീകരിക്കുന്നു, നിങ്ങൾ സെൽ ഉള്ളടക്കങ്ങൾ ഇരട്ട ഉദ്ധരണികൾക്കിടയിൽ ഇടുകയും അവയെ കോമകൾ ഉപയോഗിച്ച് വേർതിരിക്കുകയും ചെയ്യുന്നു. നിങ്ങളുടെ ചില ഡാറ്റ നിങ്ങളുടെ പക്കലുണ്ടെങ്കിൽ ശ്രദ്ധിക്കുക, അത് നിങ്ങളുടെ CSV തകർത്ത് അനാവശ്യമായ പുതിയ വരികൾ സൃഷ്‌ടിച്ചേക്കാം.

കുറച്ച് ഗൂഗിളിൽ നിങ്ങൾക്ക് ഇത് കണ്ടെത്താനാകും: http://www.the-art-of-web.com/php/dataexport/

ഡാറ്റ തയ്യാറാക്കൽ

$data = അറേ(അറേ("ആദ്യനാമം" => "മേരി", "അവസാനനാമം" => "ജോൺസൺ", "പ്രായം" => 25), അറേ("ആദ്യനാമം" => "അമൻഡ", "അവസാനനാമം" => " മില്ലർ", "പ്രായം" => 18), അറേ("ആദ്യനാമം" => "ജെയിംസ്", "അവസാനനാമം" => "ബ്രൗൺ", "പ്രായം" => 31), അറേ("ആദ്യനാമം" => "പട്രീഷ്യ", "അവസാന നാമം" => "വില്യംസ്", "പ്രായം" => 7), അറേ("ആദ്യനാമം" => "മൈക്കൽ", "അവസാനനാമം" => "ഡേവിസ്", "പ്രായം" => 43), അറേ("ആദ്യനാമം" => "സാറ", "അവസാനനാമം" => "മില്ലർ", "പ്രായം" => 24), അറേ("ആദ്യനാമം" => "പാട്രിക്", "അവസാനനാമം" => "മില്ലർ", "പ്രായം" => 27) );

ടാബ്-ഡിലിമിറ്റഡ് ഫോർമാറ്റിൽ ഡാറ്റ ഔട്ട്പുട്ട് ചെയ്യുക എന്നതാണ് ആദ്യപടി (CSV ഉപയോഗിക്കാവുന്നതാണ്, എന്നാൽ കുറച്ചുകൂടി സങ്കീർണ്ണമാണ്). ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾ ഇനിപ്പറയുന്ന കോഡ് ഉപയോഗിക്കുന്നു:

ഞങ്ങൾ ഉള്ളടക്ക തരം ടെക്‌സ്‌റ്റ്/പ്ലെയിൻ ആയി സജ്ജീകരിച്ചതിനാൽ ഫലം ബ്രൗസറിൽ കൂടുതൽ എളുപ്പത്തിൽ കാണാൻ കഴിയും. അല്ലെങ്കിൽ, HTML ഫോർമാറ്റിംഗ് ഇല്ലാത്തതിനാൽ, ഔട്ട്പുട്ട് ടെക്സ്റ്റിൻ്റെ ഒരു വരിയായി ദൃശ്യമാകും.

ഔട്ട്പുട്ടിൻ്റെ ആദ്യ വരി കോളം തലക്കെട്ടുകളായിരിക്കും (ഈ സാഹചര്യത്തിൽ ഫീൽഡ് നാമങ്ങൾ ഉപയോഗിക്കുന്നു). മൂല്യങ്ങൾ ടാബ് \t, ലൈൻ ബ്രേക്കുകൾ ഉള്ള ലൈനുകൾ \n എന്നിവയാൽ വേർതിരിച്ചിരിക്കുന്നു. ഫലം ഇതുപോലെയായിരിക്കണം:

ആദ്യനാമം അവസാനനാമം പ്രായം മേരി ജോൺസൺ 25 അമാൻഡ മില്ലർ 18 ജെയിംസ് ബ്രൗൺ 31 പട്രീഷ്യ വില്യംസ് 7 മൈക്കൽ ഡേവിസ് 43 സാറാ മില്ലർ 24 പാട്രിക് മില്ലർ 27

ഈ കോഡിൽ ഒരു ബലഹീനതയുണ്ട്, അത് പെട്ടെന്ന് വ്യക്തമാകില്ല. ഔട്ട്‌പുട്ട് ചെയ്യേണ്ട ഫീൽഡുകളിലൊന്നിൽ ഇതിനകം ഒന്നോ അതിലധികമോ ടാബ് പ്രതീകങ്ങൾ അല്ലെങ്കിൽ, മോശമായ, ഒരു പുതിയ ലൈൻ അടങ്ങിയിരിക്കുന്നുണ്ടെങ്കിലോ? നിരകളും ലൈൻ ബ്രേക്കുകളും സൂചിപ്പിക്കാൻ ഞങ്ങൾ ഈ ചിഹ്നങ്ങളെ ആശ്രയിക്കുന്നതിനാൽ ഇത് മുഴുവൻ പ്രക്രിയയും ട്രിഗർ ചെയ്യും.

ടാബ് പ്രതീകങ്ങൾ "രക്ഷപ്പെടുക" എന്നതാണ് പരിഹാരം. ഈ സാഹചര്യത്തിൽ, ഞങ്ങൾ ടാബുകൾ അക്ഷരാർത്ഥത്തിൽ \t ഉം ലൈൻ ബ്രേക്കുകൾ അക്ഷരാർത്ഥത്തിൽ \n ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും, അതിനാൽ അവ ഫോർമാറ്റിംഗിനെ ബാധിക്കില്ല:

ഇപ്പോൾ, ഓരോ വരിയും പ്രതിധ്വനിക്കുന്നതിന് മുമ്പ്, ഏതെങ്കിലും ടാബ് പ്രതീകങ്ങൾ "\t" ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു, അങ്ങനെ നമ്മുടെ നിരകൾ തകരില്ല. കൂടാതെ, ഡാറ്റയ്ക്കുള്ളിലെ ഏത് ലൈൻ ബ്രേക്കുകളും "\n" ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു.

.
ആ കുറിപ്പിൽ അവതരിപ്പിച്ചിരിക്കുന്ന രീതി തീർച്ചയായും വളരെ ലളിതമാണ്, എന്നാൽ എല്ലായ്പ്പോഴും സൗകര്യപ്രദമായിരിക്കണമെന്നില്ല.
PHP-യിൽ നിന്ന് Excel-ലേക്ക് ടാബ്ലർ ഡാറ്റ കൈമാറാൻ മറ്റ് നിരവധി മാർഗങ്ങളുണ്ട്, എനിക്ക് ഏറ്റവും ലളിതവും പ്രവർത്തനപരവുമായി തോന്നിയ ഒന്ന് ഞാൻ വിവരിക്കും. ഞാൻ ഒരു xls ഫയൽ സൃഷ്ടിക്കുന്നതിനെക്കുറിച്ചല്ല സംസാരിക്കുന്നത് എന്നത് പ്രത്യേകം ശ്രദ്ധിക്കേണ്ടതാണ്, എന്നാൽ പ്രോഗ്രാമിംഗിൽ പരിചയമില്ലാത്ത ഉപയോക്താക്കൾ വ്യാജം ശ്രദ്ധിക്കാതിരിക്കാൻ ഉപയോക്താവിന് ലഭിച്ച ഡാറ്റ Excel ഉപയോഗിച്ച് തുറക്കാൻ നിർദ്ദേശിക്കുന്നു.

അതിനാൽ, നിങ്ങൾ ആദ്യം ചെയ്യേണ്ടത് ഇനിപ്പറയുന്ന തലക്കെട്ടുകൾ സൃഷ്ടിക്കുന്ന ഒരു സ്ക്രിപ്റ്റിലേക്കുള്ള ഒരു ലിങ്ക് ഞങ്ങളുടെ പേജിൽ സ്ഥാപിക്കുക എന്നതാണ്:
തലക്കെട്ട്("പ്രാഗ്മ: പൊതു");
തലക്കെട്ട് ("കാലഹരണപ്പെടുന്നു: 0");
തലക്കെട്ട് ("കാഷെ-നിയന്ത്രണം: വീണ്ടും മൂല്യനിർണ്ണയം ചെയ്യണം, പോസ്റ്റ്-ചെക്ക്=0, പ്രീ-ചെക്ക്=0");
തലക്കെട്ട് ("കാഷെ-നിയന്ത്രണം: സ്വകാര്യം", തെറ്റ്);
തലക്കെട്ട് ("ഉള്ളടക്ക-തരം: ആപ്ലിക്കേഷൻ/x-msexcel");
തലക്കെട്ട്("ഉള്ളടക്ക-വ്യവഹാരം: അറ്റാച്ച്മെൻ്റ്; ഫയലിൻ്റെ പേര്=\"" . iconv("UTF-8", "CP1251", $object->getFileName()) . "\";");
തലക്കെട്ട് ("ഉള്ളടക്ക-കൈമാറ്റം-എൻകോഡിംഗ്: ബൈനറി");
തലക്കെട്ട്("ഉള്ളടക്ക-ദൈർഘ്യം: ". $object->getFileSize());

$object ഒരു ശൂന്യതയിലുള്ള ഒരു ഗോളാകൃതിയിലുള്ള വസ്തുവാണ്, അത് ഓരോ വായനക്കാരനും അവനോ അവൾക്കോ ​​ഇഷ്ടമുള്ള രീതിയിൽ നടപ്പിലാക്കാൻ കഴിയും. getFileName() ഉം getFileSize() getters ഉം അവരുടെ പേരുകളിൽ നിന്ന് വ്യക്തമാണ്. വ്യക്തമല്ലാത്ത ഒരു സൂക്ഷ്മത ഇവിടെ ഹൈലൈറ്റ് ചെയ്യുന്നത് മൂല്യവത്താണ് (ഇത് എന്നെ ഓർമ്മിപ്പിച്ചതിന് നന്ദി) - getFileName() തീർച്ചയായും ഏത് ഫയലിൻ്റെ പേരും തിരികെ നൽകാം, എന്നാൽ Excel-ൽ സ്വീകരിച്ച ഉള്ളടക്കം തുറക്കാൻ ബ്രൗസർ നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടെങ്കിൽ, ഫയൽ വിപുലീകരണം xls ആകുക.
ഞാൻ ഇതുവരെ പുതിയതായി ഒന്നും പറഞ്ഞിട്ടില്ല, ഇതെല്ലാം എനിക്ക് മുമ്പ് കണ്ടുപിടിച്ചതാണ്, എന്നിരുന്നാലും, ചുവടെ വിവരിക്കുന്നത് പോലെ.
ലേഖനത്തിലെ അഭിപ്രായങ്ങളിൽ ശരിയായി സൂചിപ്പിച്ചതുപോലെ, Excel XML-ൽ വളരെ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു. എന്നാൽ ഏറ്റവും പ്രധാനപ്പെട്ട നേട്ടം, ഒരുപക്ഷേ, വേഗതയല്ല, മറിച്ച് കൂടുതൽ വിശാലമായ കഴിവുകളാണ്. ഞാൻ കളകളിലേക്ക് കൂടുതൽ ആഴത്തിൽ പോകില്ല, പക്ഷേ ഒരു ലളിതമായ ഉദാഹരണവും എല്ലാ ടാഗുകളുടെയും വിശദമായ വിവരണത്തിലേക്കുള്ള ലിങ്കും നൽകും.

അതിനാൽ, ഹെഡറുകൾ ജനറേറ്റ് ചെയ്‌ത ശേഷം, ഞങ്ങൾ ഉപയോക്താവിന് യഥാർത്ഥ ഡാറ്റ നൽകേണ്ടതുണ്ട്. ഞാൻ സാധാരണയായി ടേബിൾ ജനറേഷൻ ഒരു പ്രത്യേക രീതിയിൽ പൊതിയുന്നു:
എക്കോ $object->getContent();

സ്മാർട്ടി ഉപയോഗിച്ച് ഞാൻ പട്ടിക സൃഷ്ടിക്കുന്നു:

(foreach from=$data.header item=caption) ($caption.columnName)(/ഫോറച്ച്)(foreach from=$data.content item=row) (foreach from=$row item=col) ($col)(/ഫോറച്ച്)(/ഫോറച്ച്)

നിങ്ങൾക്ക് കോഡിൽ നിന്ന് കാണാനാകുന്നതുപോലെ, $ഡാറ്റ അറേ ടെംപ്ലേറ്റിലേക്ക് കൈമാറുന്നു, അതിൽ രണ്ട് അറേകൾ അടങ്ങിയിരിക്കുന്നു - പട്ടികയുടെ ശീർഷക വരിയും ഡാറ്റയും.
XML സൃഷ്ടിക്കുന്നതിന് മാത്രം ഒരു ടെംപ്ലേറ്റ് എഞ്ചിൻ ഉപയോഗിക്കുന്നത് കുറച്ച് ചെലവേറിയതാണ്, കൂടാതെ XML മറ്റ് പല വഴികളിലൂടെയും നേടാനാകും എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്. എൻ്റെ പ്രത്യേക സാഹചര്യത്തിൽ, ഒരു ടെംപ്ലേറ്റ് എഞ്ചിൻ ഒഴിച്ചുകൂടാനാവാത്ത ഒരു വലിയ പ്രോജക്റ്റിലെ ഒരു ചെറിയ ബോണസ് മാത്രമാണ് XML ജനറേഷൻ.

ഒരു ഉദാഹരണമായി, ഞാൻ ഒരു ലളിതമായ പട്ടിക നൽകി; വേണമെങ്കിൽ, നിങ്ങൾക്ക് കൂടുതൽ ആട്രിബ്യൂട്ടുകൾ കൈകാര്യം ചെയ്യാൻ കഴിയും. നടപ്പിലാക്കുന്നതിന് മൂന്നാം കക്ഷി ലൈബ്രറികൾ ആവശ്യമില്ല എന്നത് കണക്കിലെടുക്കുമ്പോൾ ഇത് വളരെ നല്ലതാണ്.
വിവരിച്ച രീതി വർഷങ്ങളായി ഒരു പ്രോജക്റ്റിൽ പ്രവർത്തിക്കുന്നു, അവൻ തുറക്കുന്ന ഡാറ്റ ഒരു എംഎസ് ഓഫീസ് പ്രമാണമല്ലെന്ന് ഒരു ഉപയോക്താവും ഇതുവരെ സംശയിച്ചിട്ടില്ല.

MS Excel-ൽ ഉപയോഗിക്കുന്ന XML ഘടനയെക്കുറിച്ച് നിങ്ങൾക്ക് കൂടുതൽ വായിക്കാം

പലർക്കും, കൂടെ ജോലി ചെയ്യുമ്പോൾ MySQL-നൊപ്പം PHPഡാറ്റാബേസിൽ നിന്ന് xls ഫോർമാറ്റിലേക്ക് ഡാറ്റ എക്‌സ്‌പോർട്ടുചെയ്യുന്നത് പോലുള്ള ഒരു ആവശ്യമുണ്ട്, അതുവഴി ഈ ഡാറ്റ ആവശ്യമുള്ള ആളുകൾ Excel-ൽ പ്രോസസ്സ് ചെയ്യുന്നു അല്ലെങ്കിൽ ഉപയോക്താക്കൾക്ക് ഈ ഡാറ്റ കാണാൻ സൗകര്യപ്രദമാണ്. അടുത്തിടെ എനിക്ക് അത്തരമൊരു ആവശ്യം ഉണ്ടായിരുന്നു, ഈ കാര്യം എങ്ങനെ നടപ്പാക്കാമെന്ന് ഇന്ന് ഞാൻ നിങ്ങളോട് പറയും.

ഈ രീതി വളരെ ലളിതമാണെന്ന് ഞാൻ ഉടൻ തന്നെ പറയും, പക്ഷേ ഡാറ്റ സാധാരണയായി അപ്‌ലോഡ് ചെയ്യപ്പെടുന്നു.

ആരംഭിക്കുന്നതിന്, അവസാന xls ഫയലിൻ്റെ ഒരു ഉദാഹരണം ഞാൻ നൽകും; Excel-ൽ, അപ്‌ലോഡ് ഇതുപോലെ കാണപ്പെടും:

മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, ചിത്രങ്ങളോ ശൈലികളോ അപ്‌ലോഡ് ചെയ്യില്ല, കോളം തലക്കെട്ടുകളും ഡാറ്റയും മാത്രം.

അപ്‌ലോഡ് ചെയ്യുന്നതിനുള്ള ഈ ഓപ്ഷനിലേക്ക് കൃത്യമായി എത്തുന്നതിന് മുമ്പ്, ഞാൻ csv ഫോർമാറ്റിൽ അപ്‌ലോഡ് ചെയ്യാൻ ശ്രമിച്ചു, പക്ഷേ ഇത് അൽപ്പം വിചിത്രമായി മാറി, തുടർന്ന് ഞാൻ ഒരു ടേബിൾ വരച്ച് xls എക്സ്റ്റൻഷൻ ഉപയോഗിച്ച് സംരക്ഷിക്കാൻ ശ്രമിച്ചു, ഇത് ഒരുതരം അസംബന്ധമായി മാറി. , ഞാൻ ഇപ്പോൾ വിവരിക്കുന്ന രീതി എനിക്ക് പൂർണ്ണമായും അനുയോജ്യമാണ്, ഇപ്പോൾ ഞാൻ അത് നിങ്ങളുമായി പങ്കിടും.

ആരംഭിക്കുന്നതിന്, ഞാൻ കഴിയുന്നത്ര അഭിപ്രായമിട്ട എല്ലാ കോഡുകളും ഞാൻ നൽകും, നിങ്ങൾക്ക് അത് തിരഞ്ഞെടുത്ത് php എക്സ്റ്റൻഷൻ ഉപയോഗിച്ച് സേവ് ചെയ്ത് ശ്രമിക്കാം, ഡാറ്റാബേസിലേക്ക് കണക്റ്റുചെയ്യുന്നതിനുള്ള ക്രമീകരണങ്ങൾ വ്യക്തമാക്കാൻ മറക്കരുത്.

MySQL-ൽ നിന്ന് PHP-യിലെ Excel-ലേക്ക് ഡാറ്റ എക്സ്പോർട്ട് ചെയ്യുക

ഞാൻ അപ്‌ലോഡ് ചെയ്യുന്ന ഡാറ്റ എന്താണെന്ന് നിങ്ങൾ മനസ്സിലാക്കുന്നതിന്, ഡാറ്റാബേസിലെ ഒരു ലളിതമായ പട്ടികയുടെ ഒരു ഉദാഹരണം ഞാൻ നൽകും ( എനിക്ക് അതിൻ്റെ പേര് ടെസ്റ്റ് ഉണ്ട്):

ടെസ്റ്റ് ടേബിൾ:

ഐഡി പേരിന്റെ ആദ്യഭാഗം പേര്
1 ഇവാനോവ് ഇവാൻ
2 പെട്രോവ് പീറ്റർ
2 പെട്രോവ്2 പീറ്റർ2
xlsData = പാക്ക് ("ssssss", 0x809, 0x08, 0x00,0x10, 0x0, 0x0); ) // നമ്പർ ഫംഗ്‌ഷൻ RecNumber($റോ, $col, $value)($this->xlsData .= pack("sssss", 0x0203, 14, $row, $col, 0x00); $this->xlsData . = പാക്ക് ("d", $value); മടങ്ങുക; ) //ടെക്സ്റ്റ് ഫംഗ്‌ഷൻ RecText($row, $col, $value)($len = strlen($value); $this->xlsData .= പായ്ക്ക് ("s*", 0x0204, 8 + $len, $row, $col, 0x00, $len); $this->xlsData .= $value; മടങ്ങുക; ) // ഒരു നമ്പർ ഫംഗ്‌ഷൻ ചേർക്കുക InsertNumber($value)( എങ്കിൽ ($ this->countCol == $this->totalCol) ($this->countCol = 0; $this->countRow++; ) $this->RecNumber($this->countRow, $this->countCol, $ മൂല്യം); $this->countCol++; മടങ്ങുക; ) // ടെക്സ്റ്റ് ഫംഗ്ഷൻ തിരുകുക InsertText($value)( ($this->countCol == $this->totalCol) ($this->countCol = 0; $this- >countRow++; ) $this->RecText($this->countRow, $this->countCol, $value); $this->countCol++; മടങ്ങുക; ) // ഒരു പുതിയ ലൈൻ ഫംഗ്ഷനിലേക്ക് പോകുക GoNewLine())( $this ->countCol = 0 ; $this->countRow++; തിരികെ; മടങ്ങുക; ) // ഫയൽ ഫംഗ്‌ഷൻ SaveFile($fileName)($this->fileName = $fileName; $this->SendFile(); ) // ഫയൽ ഫംഗ്‌ഷൻ അയയ്ക്കുക SendFile())( $this->EndData(); തലക്കെട്ട് ("അവസാനം-പരിഷ്ക്കരിച്ചത്: " . gmdate("D,d M YH:i:s") . " GMT"); തലക്കെട്ട് ("കാഷെ-നിയന്ത്രണം: നോ-സ്റ്റോർ, നോ-കാഷെ, പുനർമൂല്യനിർണ്ണയം"); തലക്കെട്ട് ("പ്രാഗ്മ: നോ-കാഷെ"); തലക്കെട്ട് ("ഉള്ളടക്ക-തരം: ആപ്ലിക്കേഷൻ/x-msexcel"); തലക്കെട്ട് ("ഉള്ളടക്ക-വ്യവഹാരം: അറ്റാച്ച്മെൻ്റ്; fileName=$this->fileName.xls"); $this പ്രിൻ്റ് ചെയ്യുക ->xlsData ; ) ) എങ്കിൽ(isset($_GET["id"])) ( //ഡാറ്റ ഫിൽട്ടർ ചെയ്യുക $id = mysql_real_escape_string(stripslashes(trim(htmlspecialchars($_GET["id"],ENT_QUOTES)))) ; $filename = "File_with_id_".$id; // ഫയലിൻ്റെ പേര് $excel = പുതിയ ExportToExcel(); //ഡാറ്റാബേസിലേക്കുള്ള അന്വേഷണം $rez= mysql_query($sql); $excel->InsertText("Identifier"); $excel->InsertText("Last Name"); $excel->InsertText("Name"); $ excel->GoNewLine(); while($ row=mysql_fetch_assoc($rez))($excel->InsertNumber($row["id"]); $excel->InsertText($row["firstname"]); $excel->InsertText($row["name"]); $excel->GoNewLine(); ) $excel->SaveFile($filename); ?>

ഇവിടെ മുഴുവൻ ആശയവും പ്രവർത്തനമാണ് പാക്ക് (), ഇത് ഡാറ്റയെ ഒരു ബൈനറി സ്‌ട്രിംഗിലേക്ക് പാക്ക് ചെയ്യുന്നു, കൂടാതെ ഞങ്ങൾ ഡാറ്റാബേസിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്‌ത ഡാറ്റ ഉപയോഗിച്ച് ഈ സ്‌ട്രിംഗിനെ തുടർച്ചയായി പൂരിപ്പിക്കുന്നു. MySql സാധാരണ പ്രവർത്തനം ഉപയോഗിച്ച് mysql_query().

ഈ കോഡിൻ്റെ പ്രവർത്തനക്ഷമത പരിശോധിക്കുന്നതിനായി, നിങ്ങൾ ഡാറ്റാബേസിലേക്ക് ഒരു കണക്ഷൻ കോൺഫിഗർ ചെയ്‌ത് സമാനമായ ഒരു പട്ടിക സൃഷ്‌ടിച്ച വസ്തുത കണക്കിലെടുത്ത്, നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന അഭ്യർത്ഥന അയയ്‌ക്കാൻ കഴിയും:

Http://your_site/file_name. php?id=2

2 ന് തുല്യമായ ഐഡിയുള്ള രണ്ട് വരികൾ നിങ്ങൾ അൺലോഡ് ചെയ്യണം.

ഇപ്പോൾ നിങ്ങൾ ഡാറ്റ അപ്‌ലോഡ് ചെയ്യാൻ അനുവദിക്കുന്ന ആർക്കും വെബ് ഇൻ്റർഫേസ് വഴി അത് അവരുടെ ലോക്കൽ കമ്പ്യൂട്ടറിലേക്ക് എളുപ്പത്തിൽ എക്‌സ്‌പോർട്ടുചെയ്യാനാകും. കോർപ്പറേറ്റ് ഉപയോക്താക്കൾക്കും, നിങ്ങളുടെ ഓർഗനൈസേഷനായി നിങ്ങൾ ഒരു ആപ്ലിക്കേഷൻ വികസിപ്പിക്കുകയാണെങ്കിൽ, ഇൻ്റർനെറ്റിലെ നിങ്ങളുടെ വെബ്സൈറ്റിൻ്റെ ഉപയോക്താക്കൾക്കും ഈ രീതി സൗകര്യപ്രദമാണ്. ഈ രീതി നിങ്ങളെ സഹായിച്ചുവെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു. നല്ലതുവരട്ടെ!

.
ആ കുറിപ്പിൽ അവതരിപ്പിച്ചിരിക്കുന്ന രീതി തീർച്ചയായും വളരെ ലളിതമാണ്, എന്നാൽ എല്ലായ്പ്പോഴും സൗകര്യപ്രദമായിരിക്കണമെന്നില്ല.
PHP-യിൽ നിന്ന് Excel-ലേക്ക് ടാബ്ലർ ഡാറ്റ കൈമാറാൻ മറ്റ് നിരവധി മാർഗങ്ങളുണ്ട്, എനിക്ക് ഏറ്റവും ലളിതവും പ്രവർത്തനപരവുമായി തോന്നിയ ഒന്ന് ഞാൻ വിവരിക്കും. ഞാൻ ഒരു xls ഫയൽ സൃഷ്ടിക്കുന്നതിനെക്കുറിച്ചല്ല സംസാരിക്കുന്നത് എന്നത് പ്രത്യേകം ശ്രദ്ധിക്കേണ്ടതാണ്, എന്നാൽ പ്രോഗ്രാമിംഗിൽ പരിചയമില്ലാത്ത ഉപയോക്താക്കൾ വ്യാജം ശ്രദ്ധിക്കാതിരിക്കാൻ ഉപയോക്താവിന് ലഭിച്ച ഡാറ്റ Excel ഉപയോഗിച്ച് തുറക്കാൻ നിർദ്ദേശിക്കുന്നു.

അതിനാൽ, നിങ്ങൾ ആദ്യം ചെയ്യേണ്ടത് ഇനിപ്പറയുന്ന തലക്കെട്ടുകൾ സൃഷ്ടിക്കുന്ന ഒരു സ്ക്രിപ്റ്റിലേക്കുള്ള ഒരു ലിങ്ക് ഞങ്ങളുടെ പേജിൽ സ്ഥാപിക്കുക എന്നതാണ്:
തലക്കെട്ട്("പ്രാഗ്മ: പൊതു");
തലക്കെട്ട് ("കാലഹരണപ്പെടുന്നു: 0");
തലക്കെട്ട് ("കാഷെ-നിയന്ത്രണം: വീണ്ടും മൂല്യനിർണ്ണയം ചെയ്യണം, പോസ്റ്റ്-ചെക്ക്=0, പ്രീ-ചെക്ക്=0");
തലക്കെട്ട് ("കാഷെ-നിയന്ത്രണം: സ്വകാര്യം", തെറ്റ്);
തലക്കെട്ട് ("ഉള്ളടക്ക-തരം: ആപ്ലിക്കേഷൻ/x-msexcel");
തലക്കെട്ട്("ഉള്ളടക്ക-വ്യവഹാരം: അറ്റാച്ച്മെൻ്റ്; ഫയലിൻ്റെ പേര്=\"" . iconv("UTF-8", "CP1251", $object->getFileName()) . "\";");
തലക്കെട്ട് ("ഉള്ളടക്ക-കൈമാറ്റം-എൻകോഡിംഗ്: ബൈനറി");
തലക്കെട്ട്("ഉള്ളടക്ക-ദൈർഘ്യം: ". $object->getFileSize());

$object ഒരു ശൂന്യതയിലുള്ള ഒരു ഗോളാകൃതിയിലുള്ള വസ്തുവാണ്, അത് ഓരോ വായനക്കാരനും അവനോ അവൾക്കോ ​​ഇഷ്ടമുള്ള രീതിയിൽ നടപ്പിലാക്കാൻ കഴിയും. getFileName() ഉം getFileSize() getters ഉം അവരുടെ പേരുകളിൽ നിന്ന് വ്യക്തമാണ്. വ്യക്തമല്ലാത്ത ഒരു സൂക്ഷ്മത ഇവിടെ ഹൈലൈറ്റ് ചെയ്യുന്നത് മൂല്യവത്താണ് (ഇത് എന്നെ ഓർമ്മിപ്പിച്ചതിന് savostin-ന് നന്ദി) - getFileName() തീർച്ചയായും ഏത് ഫയലിൻ്റെ പേരും തിരികെ നൽകാം, എന്നാൽ ലഭിച്ച ഉള്ളടക്കം Excel-ൽ തുറക്കാൻ ബ്രൗസർ ആവശ്യപ്പെടുകയാണെങ്കിൽ, ഫയൽ വിപുലീകരണം xls ആയിരിക്കണം.
ഞാൻ ഇതുവരെ പുതിയതായി ഒന്നും പറഞ്ഞിട്ടില്ല, ഇതെല്ലാം എനിക്ക് മുമ്പ് കണ്ടുപിടിച്ചതാണ്, എന്നിരുന്നാലും, ചുവടെ വിവരിക്കുന്നത് പോലെ.
PHP-യിലെ xls ജനറേഷനെക്കുറിച്ചുള്ള പോസ്റ്റിലെ അഭിപ്രായങ്ങളിൽ ശരിയായി സൂചിപ്പിച്ചതുപോലെ, Excel XML-ൽ വളരെ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു. എന്നാൽ ഏറ്റവും പ്രധാനപ്പെട്ട നേട്ടം, ഒരുപക്ഷേ, വേഗതയല്ല, മറിച്ച് കൂടുതൽ വിശാലമായ കഴിവുകളാണ്. ഞാൻ കളകളിലേക്ക് കൂടുതൽ ആഴത്തിൽ പോകില്ല, പക്ഷേ ഒരു ലളിതമായ ഉദാഹരണവും എല്ലാ ടാഗുകളുടെയും വിശദമായ വിവരണത്തിലേക്കുള്ള ലിങ്കും നൽകും.

അതിനാൽ, ഹെഡറുകൾ ജനറേറ്റ് ചെയ്‌ത ശേഷം, ഞങ്ങൾ ഉപയോക്താവിന് യഥാർത്ഥ ഡാറ്റ നൽകേണ്ടതുണ്ട്. ഞാൻ സാധാരണയായി ടേബിൾ ജനറേഷൻ ഒരു പ്രത്യേക രീതിയിൽ പൊതിയുന്നു:
എക്കോ $object->getContent();

സ്മാർട്ടി ഉപയോഗിച്ച് ഞാൻ പട്ടിക സൃഷ്ടിക്കുന്നു:

(foreach from=$data.header item=caption) ($caption.columnName)(/ഫോറച്ച്)(foreach from=$data.content item=row) (foreach from=$row item=col) ($col)(/ഫോറച്ച്)(/ഫോറച്ച്)

നിങ്ങൾക്ക് കോഡിൽ നിന്ന് കാണാനാകുന്നതുപോലെ, $ഡാറ്റ അറേ ടെംപ്ലേറ്റിലേക്ക് കൈമാറുന്നു, അതിൽ രണ്ട് അറേകൾ അടങ്ങിയിരിക്കുന്നു - പട്ടികയുടെ ശീർഷക വരിയും ഡാറ്റയും.
XML സൃഷ്ടിക്കുന്നതിന് മാത്രം ഒരു ടെംപ്ലേറ്റ് എഞ്ചിൻ ഉപയോഗിക്കുന്നത് കുറച്ച് ചെലവേറിയതാണ്, കൂടാതെ XML മറ്റ് പല വഴികളിലൂടെയും നേടാനാകും എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്. എൻ്റെ പ്രത്യേക സാഹചര്യത്തിൽ, ഒരു ടെംപ്ലേറ്റ് എഞ്ചിൻ ഒഴിച്ചുകൂടാനാവാത്ത ഒരു വലിയ പ്രോജക്റ്റിലെ ഒരു ചെറിയ ബോണസ് മാത്രമാണ് XML ജനറേഷൻ.

ഒരു ഉദാഹരണമായി, ഞാൻ ഒരു ലളിതമായ പട്ടിക നൽകി; വേണമെങ്കിൽ, നിങ്ങൾക്ക് കൂടുതൽ ആട്രിബ്യൂട്ടുകൾ കൈകാര്യം ചെയ്യാൻ കഴിയും. നടപ്പിലാക്കുന്നതിന് മൂന്നാം കക്ഷി ലൈബ്രറികൾ ആവശ്യമില്ല എന്നത് കണക്കിലെടുക്കുമ്പോൾ ഇത് വളരെ നല്ലതാണ്.
വിവരിച്ച രീതി വർഷങ്ങളായി ഒരു പ്രോജക്റ്റിൽ പ്രവർത്തിക്കുന്നു, അവൻ തുറക്കുന്ന ഡാറ്റ ഒരു എംഎസ് ഓഫീസ് പ്രമാണമല്ലെന്ന് ഒരു ഉപയോക്താവും ഇതുവരെ സംശയിച്ചിട്ടില്ല.

MS Excel-ൽ ഉപയോഗിക്കുന്ന XML ഘടനയെക്കുറിച്ച് നിങ്ങൾക്ക് കൂടുതൽ വായിക്കാം