የ JSON ወደ Excel (XLSX) የመቀየር ልዩ ባህሪና አስፈላጊነት
የ JSON (JavaScript Object Notation) ፋይሎችን ወደ Excel (XLSX) ለመቀየር የሚደረገው ሂደት ከቀላል የፋይል ፎርማት ለውጥ የዘለለ የዳታ መዋቅር ሽግግርን ይጠይቃል። JSON በተፈጥሮው ተዋረድ ያለው (hierarchical)፣ አንዱ በሌላው ውስጥ ሊሰካ የሚችል (nested) እና ዳታን በተለያዩ አይነቶች (objects, arrays, numbers, booleans, null) መያዝ የሚችል ቋንቋ ነው። በአንጻሩ የኤክሴል ሰንጠረዦች ባለ ሁለት አቅጣጫዊ ጠፍጣፋ (flat) መዋቅር ያላቸው በመሆናቸው ይህንን ተዋረድ በቀጥታ ማሳየት አይችሉም። ይህ መገልገያ ልዩ የሚያደርገው ይህንን የዳታ መዋቅር ልዩነት በነጥብ መንገድ (dot-path) አቀራረብ አማካኝነት ወደ ጠፍጣፋ ሰንጠረዥ የሚቀይርበት ስልተ-ቀመር (algorithm) የተገጠመለት መሆኑ ነው። ይህም ከ CSV ወይም ከመደበኛ የኤክሴል ፋይሎች ወደ ሌላ ቅርጸት በሚደረግ ለውጥ ላይ የማይታይና ለ JSON ፋይሎች ብቻ ተለይቶ የሚተገበር ደንብ ነው።
ለመቀየር የምንጠቀምበት የ XLSX ፋይል ፎርማት ከተለመደው የ CSV ፋይል በብዙ መልኩ ይለያል። የ CSV ፋይሎች ሁሉንም ዳታዎች ወደ ተራ ጽሑፍ (plain text) የሚቀይሩ ሲሆን፣ XLSX ግን በራሱ የተጨመቀ የ XML ፋይል (zipped XML workbook) በመሆኑ የዳታ አይነቶችን (እንደ ቁጥር እና ቡሊያን ያሉ) ሳያጠፋ በራሳቸው የዳታ ፎርማት ማስቀመጥ ይችላል። ይህ መገልገያ እነዚህን የዳታ አይነቶች ጠብቆ ወደ XLSX ፋይል ይጽፋል። ይሁን እንጂ መገልገያው በምንጭ ፋይሉ ውስጥ ሊኖሩ የሚችሉ ማናቸውንም ፎርሙላዎች ወይም የሴሎች ዲዛይንና ስታይል (styling) አያስተላልፍም፤ የሚጽፈው ከ JSON የተገኘውን የሚታይና የማይንቀሳቀስ (static) ዳታ ብቻ ነው።
የ JSON ተዋረድን ወደ ጠፍጣፋ ሰንጠረዥ የመቀየር ስልት (Flattening Rules)
ተዋረድ ያላቸውን የ JSON ዳታዎች ወደ ኤክሴል ሰንጠረዥ በሚቀየርበት ጊዜ እያንዳንዱ የዳታ ክፍል የሚቀመጥበት የራሱ ደንብ አለው። መገልገያው ሰነዱን ጠፍጣፋ ለማድረግ የሚከተሉትን ህጎች ይተገብራል፦
-
የኦብጀክቶች አሬይ (Array of Objects) ወደ ረድፎች መለወጥ፦ የ JSON ፋይሉ በዋናነት የኦብጀክቶች ስብስብ (array of objects) ከሆነ፣ እያንዳንዱ ኦብጀክት በኤክሴል ሰንጠረዥ ውስጥ እንደ አንድ ረድፍ (row) ይቆጠራል። በኦብጀክቱ ውስጥ ያሉ ቁልፎች (keys) ደግሞ የአምድ ራስጌዎች (column headers) ይሆናሉ።
-
በነጥብ መንገድ (Dot-Path) መዘርጋት፦ በ JSON ውስጥ ያሉ ውስብስብና አንዱ በሌላው ውስጥ የተሰኩ ቁልፎች (nested keys) ካጋጠሙ፣ መገልገያው እነዚህን ተዋረዶች በነጥብ በመለየት ወደ አምድ ራስጌነት ይቀይራቸዋል። ለምሳሌ የሚከተለውን የ JSON ዳታ ብንወስድ፦
{ "username": "ዮናስ", "address": { "city": "አዲስ አበባ", "subcity": "ቦሌ" } }ይህ ዳታ ወደ ኤክሴል ሲቀየር የሚከተሉትን አምዶች ይፈጥራል፦
usernameaddress.cityaddress.subcity
-
የአሬይ አሬዮች (Array of Arrays) አያያዝ፦ የገባው JSON የኦብጀክቶች ስብስብ ሳይሆን የአሬይ አሬዮች (array of arrays) በሚሆንበት ጊዜ፣ መገልገያው እያንዳንዱን የውስጥ አሬይ በቀጥታ ወደ ሰንጠረዥ ረድፍነት ይቀይረዋል። በዚህ ጊዜ ምንም ዓይነት የቁልፍ ስም ስለማይኖር፣ ረድፎቹ በይዘታቸው ቅደም ተከተል መሠረት በኤክሴል ሰንጠረዥ ላይ ይሰፍራሉ።
-
የጠፍጣፋ ሰንጠረዥ ወሰኖች፦ ውስብስብ የሆኑ ተያያዥ አሬዮችን ወይም በጣም የረቀቁ የኦብጀክት መዋቅሮችን በአንድ የኤክሴል ወረቀት (sheet) ላይ ሙሉ በሙሉ ተዋረዱን ጠብቆ ማስቀመጥ አይቻልም። በመሆኑም ይህ መገልገያ ዳታውን ወደ መጀመሪያው የኤክሴል ወረቀት (first worksheet) ብቻ የሚያሰፍር ሲሆን፣ ከአንድ በላይ የሆኑ የኤክሴል ወረቀቶችን (multiple sheets) አይፈጥርም።
የዳታ አይነቶች በ JSON እና በ Excel (XLSX) ውስጥ
ዳታን ከ JSON ወደ XLSX በሚሸጋገርበት ጊዜ የዳታዎች አይነት ትክክለኛነት መጠበቅ እጅግ ወሳኝ ነው። JSON አምስት ዋና ዋና የዳታ አይነቶችን ይደግፋል፤ እነሱም ቁጥሮች (numbers)፣ ቡሊያኖች (booleans)፣ ስትሪንግ ወይም ጽሑፎች (strings)፣ ባዶ እሴቶች (null) እና ስብስቦች (objects/arrays) ናቸው።
-
ቁጥሮች (Numbers)፦ በ JSON ውስጥ ያሉ ሙሉ ቁጥሮችም ሆኑ አስርዮሾች በ XLSX ፋይል ውስጥ እንደ እውነተኛ የቁጥር ዳታ ይቀመጣሉ። ይህም ተጠቃሚዎች ፋይሉን በኤክሴል ሲከፍቱ በቀጥታ የሒሳብ ስሌቶችንና ፎርሙላዎችን እንዲተገብሩባቸው ያስችላቸዋል። በ CSV ፋይል ቢሆን ኖሮ ሁሉም ቁጥሮች ወደ ጽሑፍ ተለውጠው ስለሚቀመጡ በኤክሴል ሲከፈቱ የዳታ አይነት ስህተት ሊያጋጥም ይችል ነበር።
-
ቡሊያኖች (Booleans)፦
trueእናfalseእሴቶች በኤክሴል ውስጥ የሎጂክ እሴት (logical values) ሆነው ይቀመጣሉ። -
ኑል እና ባዶ እሴቶች (Null and Empty Values)፦ በ JSON ውስጥ ያለ የ
nullእሴት ወይም ደግሞ በአንዳንድ ረድፎች ላይ ሙሉ በሙሉ ያልተጠቀሰ (የሌለ) ቁልፍ ካለ፣ በኤክሴል ሰንጠረዥ ውስጥ ተጓዳኙ ሴል (cell) ባዶ ሆኖ ይተረጎማል። -
የ XLSX ፋይል መዋቅር ባህሪ፦ XLSX ፋይል በውስጡ የተጨመቁ የ XML ሰነዶችን የያዘ በመሆኑ፣ እያንዳንዱ ሴል ምን አይነት ዳታ እንደያዘ የሚገልጽ ሜታዳታ አብሮት ይጓዛል። ይህ መገልገያ ይህንን የ XLSX ባህሪ በመጠቀም የዳታዎቹን አይነት ሳይበርዝ ያሰፍራል። ነገር ግን ከመጀመሪያው የ JSON ፋይል የሚገኘው ዳታ ስታቲክ በመሆኑ፣ በኤክሴል ውስጥ የሚሰሩ ቀመሮች (formulas) ወይም የሴል ማቅለሚያዎች በለውጡ ሂደት ውስጥ አይካተቱም።
የግብዓት ፋይል ደንቦች፣ የውጤት መዋቅር እና የስህተት አያያዝ
ይህንን መገልገያ ለመጠቀም ተጠቃሚው ማሟላት የሚገባቸው ግልጽ መለኪያዎችና ደንቦች አሉ። እነዚህን ደንቦች አለማክበር ወደተለያዩ የስህተት መልዕክቶች ይመራል።
የግብዓት እና የውጤት መዋቅር
- ግብዓት (Input)፦ መገልገያው በአንድ ጊዜ ሊያስተናግድ የሚችለው አንድ ነጠላ የ JSON ፋይል ብቻ ነው። ፋይሉ የግድ በሰንጠረዥ መልክ ሊቀመጥ የሚችል የዳታ ቅርጽ (table-shaped) ሊኖረው ይገባል። ይህም ማለት የኦብጀክቶች ስብስብ (array of objects) ወይም የአሬይ አሬዮች (array of arrays) መሆን አለበት ማለት ነው።
- ውጤት (Output)፦ ልወጣው ሲጠናቀቅ ተጠቃሚው የተዘጋጀውን የ XLSX ፋይል ማውረድ ይችላል። ከዚህ በተጨማሪ በመድረኩ ላይ የረድፎችና የአምዶች ብዛት፣ የውጤት ፋይሉ መጠን በኪሎባይት (KB/MB) እና የተለወጠውን ዳታ በከፊል የሚያሳይ ቅድመ-እይታ (preview) ይቀርባል።
ሊያጋጥሙ የሚችሉ የስህተት መልዕክቶች
በፋይል ምርጫ፣ በይዘት ወይም በልወጣ ሂደት ላይ ችግር ካጋጠመ የሚከተሉት ትክክለኛ የስህተት መልዕክቶች ሊታዩ ይችላሉ፦
- “Choose one file first.” – ተጠቃሚው ምንም ፋይል ሳይመርጥ የለውጥ ቁልፉን ሲጫን የሚመጣ ስህተት።
- “Choose a CSV, JSON or XLSX file.” – የተመረጠው ፋይል መገልገያው ከሚደግፋቸው ቅርጸቶች ውጭ ሲሆን የሚታይ መልዕክት።
- “This file is too large. Use a file under ‹max›.” – የገባው ፋይል ከተፈቀደው ከፍተኛ መጠን በላይ ሲሆን የሚመጣ ገደብ።
- “This JSON is invalid or not table‑shaped.” – የ JSON ፋይሉ ሰዋሰዋዊ ስህተት ሲኖርበት ወይም ደግሞ ወደ ሰንጠረዥ ሊቀየር የማይችል መዋቅር (ለምሳሌ ነጠላ ኦብጀክት ወይም ተራ ጽሑፍ ብቻ) ሲሆን የሚታይ ስህተት።
- “This file has no table rows.” – በፋይሉ ውስጥ ምንም ዓይነት የዳታ ረድፍ ካልተገኘ የሚመጣ መልዕክት።
- “This table has more than ‹max› rows.” – የሰንጠረዡ የረድፎች ብዛት ከተፈቀደው ከፍተኛ ገደብ በላይ ሲሆን።
- “This table has more than ‹max› columns.” – የሰንጠረዡ የአምዶች ብዛት ከተፈቀደው ከፍተኛ ገደብ በላይ ሲያልፍ።
- “Conversion cancelled.” – ልወጣው በተጠቃሚው ወይም በስርዓቱ ከተቋረጠ የሚታይ መልዕክት።
- “This conversion is taking too long. Try a smaller file.” – ፋይሉ በጣም ውስብስብ ሆኖ ልወጣው ከተፈቀደው የጊዜ ገደብ በላይ ሲወስድ የሚመጣ ማሳሰቢያ።
በአሳሽ ውስጥ የሚከናወን የዳታ ደህንነት ጥበቃ (Client-Side Processing)
ይህ መገልገያ ከሌሎች በርካታ የኢንተርኔት መለወጫዎች የሚለይበት ትልቁ ባህሪ የዳታ ልወጣውን የሚያከናውንበት መንገድ ነው። አብዛኛዎቹ መድረኮች ፋይሉን ወደ ራሳቸው ሰርቨር በመጫን (upload) ካቀነባበሩ በኋላ ተጠቃሚው መልሶ እንዲያወርደው ያደርጋሉ። ይህ አካሄድ ግን ሚስጥራዊ የሆኑ የግል ወይም የድርጅት ዳታዎችን ለደህንነት ስጋት ያጋልጣል።
ይህ መገልገያ ግን ሙሉ በሙሉ በተጠቃሚው የበይነመረብ አሳሽ (client-side browser) ውስጥ ነው ስራውን የሚሰራው። ፋይሉን ወደ የትኛውም ውጫዊ ሰርቨር አይልክም፤ እንዲሁም ምንም ዓይነት የዳታ ቅጂ በኢንተርኔት ላይ አይቀመጥም። ዳታው የሚነበበውና ወደ XLSX የሚቀየረው በአሳሹ የذاكرة (memory) ክፍል ውስጥ በጃቫስክሪፕት (JavaScript) አማካኝነት ብቻ ነው።
ይህም የሚከተሉትን ጥቅሞች ይሰጣል፦
- ፍጹም የዳታ ደህንነትና ሚስጥራዊነት፦ የድርጅት የፋይናንስ መግለጫዎች፣ የአይቲ መዋቅር ኮንፊግሬሽኖች ወይም የደንበኞች መረጃዎች ከኮምፒውተርዎ ሳይወጡ በአስተማማኝ ሁኔታ ይለወጣሉ።
- ፈጣን አፈጻጸም፦ ፋይልን ወደ ሰርቨር ለመጫንና ለመመለስ የሚወስደው የኢንተርኔት ባንድዊድዝ (bandwidth) ስለማይፈለግ ልወጣው በሴኮንዶች ውስጥ ይጠናቀቃል።
- ከመስመር ውጭ መስራት መቻል፦ ገጹ አንዴ ከተጫነ በኋላ ያለ ኢንተርኔት ግንኙነት እንኳ ልወጣውን ማከናወን ይቻላል።
ይህ መገልገያ ለማን ተጠቃሚዎች የተዘጋጀ ነው?
የ JSON ፋይልን ወደ ኤክሴል የመቀየር ፍላጎት በተለያዩ የሙያ ዘርፎች ውስጥ በስፋት ይታያል፦
-
የዳታ ተንታኞች (Data Analysts)፦ ከተለያዩ ድረ-ገጾች ወይም የዳታቤዝ ሲስተሞች በ JSON መልክ የሚወጡ ዳታዎችን ለማንበብ፣ ግራፍ ለመስራትና በኤክሴል የፓይቮት ሰንጠረዦች (Pivot Tables) ለመተንተን ለሚፈልጉ ተንታኞች ይህ መገልገያ ያለ ምንም ኮዲንግ (no-code) ዳታውን ጠፍጣፋ አድርጎ ያቀርብላቸዋል።
-
የሶፍትዌር አልሚዎች (Software Developers)፦ ከኤፒአይ (API) የተገኙ ምላሾችን (payloads) ወይም የስርዓት ውቅረት (configuration) ፋይሎችን መደበኛ ባልሆኑ የቴክኒክ ሰራተኞች በቀላሉ እንዲነበቡ ለማድረግና ሪፖርት ለማዘጋጀት ለሚፈልጉ ባለሙያዎች ተመራጭ ነው።
-
የንግድና የሪፖርት ባለሙያዎች፦ የቴክኒክ ዳታዎችን ወስደው ለስራ አስኪያጆች ወይም ለደንበኞች በኤክሴል ፋይል መልክ ለማጋራትና በጋራ ለመስራት ለሚፈልጉ ሰራተኞች ስራቸውን ያቀልጣል።
-
የዳታ ጥራት ጠባቂዎች፦ በ XLSX ውስጥ የዳታ አይነቶች (ቁጥር እና ቡሊያን) ተጠብቀው ስለሚቀመጡ፣ የዳታ መዛባትን ለመከላከልና ትክክለኛውን ቅርጸት ይዞ ለመቀጠል ለሚፈልጉ ባለሙያዎች እጅግ ጠቃሚ ነው።
በተደጋጋሚ የሚነሱ ጥያቄዎች (FAQ)
1. ይህ መገልገያ ውስብስብ የሆኑ የ JSON ሰነዶችን (nested objects) እንዴት ነው ወደ ሰንጠረዥ የሚቀይረው?
መገልገያው በተዋረድ ውስጥ ያሉትን ቁልፎች በነጥብ በመለየት (ለምሳሌ user.profile.name) ወደ ሰንጠረዥ አምድ ራስጌነት ይቀይራቸዋል። በዚህም ምክንያት የቱንም ያህል የተሰካ ዳታ ቢኖር ወደ አንድ ጠፍጣፋ ሰንጠረዥ እንዲመጣ ይደረጋል።
2. ፋይሌን ወደዚህ ድረ-ገጽ ስሰቅል የዳታዬ ደህንነት ይጠበቃል?
አዎ፣ ፍጹም የተጠበቀ ነው። መገልገያው የሚሠራው በኮምፒውተርዎ አሳሽ (client-side) ላይ ብቻ በመሆኑ ፋይልዎ ወደ የትኛውም ሰርቨር አይጫንም። የዳታ ልወጣው የሚከናወነው በአገር ውስጥ ኮምፒውተርዎ ላይ ብቻ ነው።
3. የ JSON ፋይሌን ወደ ኤክሴል ስቀይር ፎርሙላዎችና የሴል ቀለሞች አብረው ያልፋሉ?
አይደለም። ይህ መገልገያ የሚያስተላልፈው ከ JSON ፋይሉ የተገኘውን የሚታይና የማይንቀሳቀስ (static) ዳታ ብቻ ነው። በምንጭ ፋይሉ ውስጥ ሊኖሩ የሚችሉ ማናቸውንም የኤክሴል ፎርሙላዎች ወይም የሴል ስታይሎችን አያስተላልፍም።
4. “This JSON is invalid or not table‑shaped” የሚል ስህተት ለምን ይመጣል?
ይህ ስህተት የሚመጣው የሰቀሉት የ JSON ፋይል ሰዋሰዋዊ ስህተት ካለበት ወይም ደግሞ ይዘቱ ወደ ሰንጠረዥ ለመቀየር የማይመች (ለምሳሌ የአሬይ ስብስብ ያልሆነ ነጠላ ዋጋ ወይም ደግሞ ሰንጠረዥ ቅርጽ የሌለው መዋቅር) ሲሆን ነው። የ JSON ፋይልዎ የኦብጀክቶች ስብስብ (array of objects) ወይም የአሬይ ስብስብ መሆኑን ያረጋግጡ።
5. በ CSV እና በ XLSX ፋይል ልወጣ መካከል ያለው ልዩነት ምንድን ነው?
የ CSV ፋይል ሁሉንም የዳታ አይነቶች ወደ ተራ ጽሑፍ (text) የሚቀይር ሲሆን፣ XLSX ግን የዳታ አይነቶችን (እንደ ቁጥር እና ቡሊያን) በራሳቸው ቅርጸት ጠብቆ ማቆየት የሚችል የተጨመቀ የ XML መዋቅር ነው። ይህ መገልገያ የዳታ አይነቶችን ጠብቆ ወደ XLSX ይለውጣል።