XLSX-ից JSON փոխակերպման էությունը
XLSX ֆայլը, որը Microsoft Excel-ի ստանդարտ ձևաչափն է 2007 թվականից ի վեր, իրականում ZIP սեղմումով փաթեթավորված XML փաստաթղթերի հավաքածու է։ Այն կարող է պարունակել բազմաթիվ աշխատաթերթեր, բանաձևեր, գունավորում, տառատեսակներ, միաձուլված բջիջներ և տվյալների տարբեր տիպեր՝ տեքստ, թիվ, ամսաթիվ, բուլյան արժեք։ JSON-ը, մյուս կողմից, հիերարխիկ տվյալների ձևաչափ է, որն աշխատում է օբյեկտների, զանգվածների, տողերի, թվերի, true/false և null արժեքներով։ Փոխակերպման ժամանակ յուրաքանչյուր XLSX բջիջ պետք է դառնա JSON-ի համապատասխան տիպ, սակայն ձևաչափումը, բանաձևերի չհաշվարկված արդյունքները և մյուս աշխատաթերթերը անհետանում են։ Սա CSV-ի հետ համեմատություն է, որտեղ ամեն ինչ դառնում է տեքստային տող, իսկ JSON-ը պահպանում է թվային և բուլյան արժեքները որպես տիպավորված տվյալներ։
Գործիքի առանձնահատկությունն այն է, որ XLSX-ից JSON վերափոխումը կատարվում է ամբողջությամբ բրաուզերում՝ առանց որևէ տվյալ սերվեր ուղարկելու։ Սա նշանակում է, որ գաղտնիությունը պահպանվում է. ձեր Excel ֆայլը ոչ մի տեղ չի վերբեռնվում, և դուք կարող եք աշխատել գաղտնի կամ մեծածավալ տվյալների հետ առանց մտահոգվելու արտահոսքի մասին։ Գործընթացը պարզ է՝ դուք ընտրում եք XLSX ֆայլը (drag-and-drop կամ ֆայլի ընտրիչով), սահմանում եք JSON ելքի ձևաչափը, և ակնթարթորեն ստանում պատրաստի JSON ֆայլ՝ նախադիտումով, տողերի և սյունակների քանակով ու ելքի ֆայլի չափով։
Ինչպես է աշխատում փոխակերպումը բրաուզերում
Փոխակերպման հիմքում ընկած է JavaScript-ի գրադարան, որը կարող է կարդալ ZIP-ի պարունակությունը և մեկնաբանել XLSX-ի XML կառուցվածքը։ Այս գրադարանն աշխատում է բրաուզերի հիշողության մեջ. նա բացում է ZIP-ը, գտնում առաջին աշխատաթերթի XML ֆայլը, և յուրաքանչյուր տողի ու սյունակի համար վերցնում է բջիջի արժեքը, ինչպես այն պահպանվել է XLSX ֆայլում։ Կարևոր է. բանաձևերը չեն հաշվարկվում. գործիքը օգտագործում է «պահված արժեքը», այսինքն՝ այն արդյունքը, որը ցուցադրվել է Excel-ում ֆայլի վերջին պահպանման պահին։ Եթե XLSX ֆայլը պարունակում է =A1+B1 նման բանաձև, ապա JSON-ում կհայտնվի այն թիվը, որը ցուցադրվել է այդ բջիջում, ոչ թե բանաձևի տեքստը կամ վերահաշվարկված արժեքը։
Բոլոր մշակումները կատարվում են հաճախորդի մեքենայում. ոչ մի HTTP հարցում չի ուղարկվում։ Սահմանափակումներ կան՝ ֆայլի չափը չպետք է գերազանցի ‹max› չափը, տողերի թիվը՝ ‹max›, իսկ սյունակները՝ ‹max›: Եթե այս սահմանները խախտվում են, ցուցադրվում է համապատասխան սխալի հաղորդագրություն։
Բջիջների տիպերի քարտեզագրում
XLSX-ում յուրաքանչյուր բջիջ ունի տիպ, որը նշված է XML-ում։ JSON-ի տարբերությունն այն է, որ այն թույլ է տալիս պահպանել այդ տիպերը առանց տողի վերածելու։ Ահա թե ինչպես է գործիքը վերաբերվում տարբեր տիպերին.
| XLSX բջիջի տիպ | JSON-ում արժեք | Օրինակ |
|---|---|---|
| Տեքստ (inlineStr կամ shared string) | տող (string) | "Բարև" |
| Թիվ (number) | թիվ (number) | 42.5 |
| Բուլյան (boolean) | true կամ false | true |
| Ամսաթիվ (date, datetime) | տող (string)՝ կախված մեկնաբանությունից | "2023-12-25T00:00:00.000Z" |
| Սխալ (error) | null | null |
| Դատարկ → null | null | null |
Կարևոր նրբություն. ամսաթվերը XLSX-ում պահվում են որպես սերիական թվեր (Excel-ի կողմից սահմանված հատուկ համակարգով), սակայն գործիքը դրանք մեկնաբանում է ISO 8601 տողի վերածելով։ Եթե ցանկանում եք պահպանել ամսաթիվը որպես թիվ, ապա պետք է Excel-ում փոխեք բջիջի ձևաչափը «Թիվ»-ի (number format) և պահպանեք ֆայլը նորից։ Նաև, բուլյան արժեքները XLSX-ում կարող են լինել TRUE/FALSE տեքստ, բայց եթե բջիջը ձևաչափված է որպես բուլյան, ապա կստանանք true/false JSON-ում։
Ինչու է միայն առաջին աշխատաթերթը
XLSX ֆայլը կարող է ունենալ տասնյակ աշխատաթերթեր, բայց գործիքը կարդում է միայն առաջինը։ Սա տեխնիկական ընտրություն է, որը պարզեցնում է գործընթացը և խուսափում բարդություններից, ինչպիսիք են բազմաթիվ աղյուսակների միաձուլումը կամ տարբեր անուններով թերթերի հետ աշխատելը։ Եթե ձեր տվյալները գտնվում են երկրորդ կամ երրորդ թերթում, դուք պետք է այդ թերթը տեղափոխեք առաջին տեղը Excel-ում կամ հանեք մյուս թերթերը։ Այս սահմանափակումը տարածված է նման գործիքներում, քանի որ JSON-ի կառուցվածքը հարթ է, և մի քանի աղյուսակների միացումը կպահանջի լրացուցիչ տրամաբանություն (օրինակ՝ թերթի անունը որպես JSON-ի բանալի ավելացնել)։ Գործիքը դա չի անում. նա վերցնում է առաջին թերթի բոլոր տողերը, որտեղ առաջին տողը դառնում է JSON-ի բանալիներ (սյունակների անուններ), իսկ հետագա տողերը՝ օբյեկտների զանգված։
Սխալներ և սահմանափակումներ
Գործիքը ունի մի շարք հստակ սխալների հաղորդագրություններ, որոնք ցուցադրվում են երբ որևէ խնդիր է առաջանում։ Ահա դրանք աղյուսակում.
| Սխալի հաղորդագրություն | Երբ է ցուցադրվում |
|---|---|
| "This Excel file could not be opened." | XLSX ֆայլը չի կարող վերլուծվել (կոռումպացված կամ սխալ ձևաչափ) |
| "This file has no table rows." | Առաջին աշխատաթերթը զուրկ է տվյալներից (0 տող) |
| "This file is too large. Use a file under ‹max›." | Ֆայլի չափը գերազանցում է ‹max› սահմանը |
| "This table has more than ‹max› rows." / "more than ‹max› columns." | Տողերի կամ սյունակների քանակը գերազանցում է թույլատրելի առավելագույնը |
| "Choose a CSV, JSON or XLSX file." | Ընտրված ֆայլը չունի CSV, JSON կամ XLSX ընդլայնում |
| "Could not convert this file." | Ընդհանուր փոխակերպման սխալ |
| "Conversion cancelled." | Օգտագործողը չեղարկել է գործողությունը |
| "This conversion is taking too long. Try a smaller file." | Փոխակերպումը գերազանցում է ժամանակի սահմանը |
Բացի այդ, միաձուլված բջիջները (merged cells) կարող են խնդիրներ առաջացնել. XLSX-ում միաձուլված բջիջներն ունեն միայն մեկ արժեք մնացած տիրույթում, սակայն JSON-ի աղյուսակում յուրաքանչյուր բջիջ պետք է ունենա իր արժեքը, ուստի մյուս բջիջները լրացվում են null-ով։ Նաև, եթե առաջին տողը չի պարունակում սյունակների անուններ (օրինակ՝ մի քանի տողերի վրա ձգվող վերնագիր), ապա JSON-ի բանալիները կդառնան ավտոմատ անուններ (0, 1, 2...) կամ կարող են սխալ տեղադրվել։ Գործիքը չի փորձում շտկել այս իրավիճակները, ուստի խորհուրդ է տրվում XLSX-ը նախապես մշակել այնպես, որ տվյալները լինեն խիստ ուղղանկյուն, առաջին տողով որպես վերնագրեր:
FAQ – Հաճախ տրվող հարցեր
1. Ինչու՞ իմ XLSX ֆայլի ամսաթվերը JSON-ում դարձան «null»: Ամսաթիվը XLSX-ում պահվում է որպես Excel-ի սերիական թիվ (օրինակ՝ 45000), բայց գործիքը փորձում է մեկնաբանել այն։ Եթե ամսաթվի բջիջը ճիշտ ձևաչափված չէ (օրինակ՝ տեքստի տեսքով), ապա արժեքը կարող է համարվել թիվ և ճիշտ մեկնաբանվել, կամ ձախողվել և դառնալ null։ Լավագույն պրակտիկան Excel-ում ամսաթվերի համար օգտագործել «Date» ձևաչափը, ապա պահպանել ֆայլը նորից։
2. Հնարավո՞ր է փոխակերպել մի քանի աշխատաթերթ միանգամից: Ոչ, գործիքը մշակում է միայն առաջին աշխատաթերթը։ Եթե ունեք մի քանի թերթ, պետք է դրանք ֆիզիկապես տեղափոխեք առաջին թերթ կամ յուրաքանչյուրը առանձին վերածեք JSON-ի՝ նախապես հեռացնելով մյուս թերթերը այլ XLSX ֆայլերում:
3. Ինչո՞ւ է բանաձևի արդյունքը տարբերվում Excel-ում ցուցադրվածից: Գործիքը չի վերահաշվարկում բանաձևերը. նա վերցնում է այն արժեքը, որը պահպանվել է XLSX ֆայլում (cached value)։ Եթե դուք թարմացրել եք բանաձևերը Excel-ում, բայց չեք պահպանել ֆայլը, ապա հին արժեքը կհայտնվի JSON-ում: Միշտ պահպանեք ֆայլը Excel-ում նախքան փոխակերպումը:
4. Կարո՞ղ եմ օգտագործել XLSM (macro-enabled) ֆայլերը: Գործիքը աշխատում է միայն XLSX ընդլայնմամբ ֆայլերի հետ: XLSM-ը, թեև նույնպես ZIP-ի վրա հիմնված, պարունակում է մակրոներ, որոնք կարող են հանգեցնել անկանխատեսելի արդյունքների: Խորհուրդ է տրվում XLSM-ը պահպանել որպես XLSX (Save As) նախքան փոխակերպումը:
5. Ինչպե՞ս են մշակվում թաքնված սյունակները: Թաքնված սյունակները XLSX-ում պահպանում են իրենց տվյալները, բայց գործիքը դրանք չի հաշվի առնում: JSON-ի ելքը ներառում է բոլոր սյունակները, անկախ նրանից՝ Excel-ում դրանք թաքնված են, թե ոչ: Եթե ցանկանում եք բացառել որոշ սյունակներ, ապա դրանք ջնջեք XLSX-ից նախքան փոխակերպումը:
6. Ինչու՞ է իմ JSON-ի բանալիների դաշտում հայտնվում «0», «1», «2»...: Դա տեղի է ունենում, երբ XLSX-ի առաջին տողը դատարկ է կամ չի պարունակում սյունակների անուններ: Գործիքը ավտոմատ կերպով վերցնում է առաջին տողը որպես JSON-ի բանալիներ: Եթե այն դատարկ է, ապա բանալիները դառնում են ինդեքսներ: Լրացրեք առաջին տողը անուններով Excel-ում և նորից պահպանեք: