რატომ არის XLSX-დან JSON-ში გარდაქმნა უფრო მეტი, ვიდრე უბრალო ფორმატის შეცვლა
როდესაც Excel-ის ფაილს JSON-ში გარდაქმნით, თქვენ არ უბრალოდ გადააქვთ ცხრილი სხვა ფორმატში — თქვენ ცვლით მონაცემთა მოდელს. XLSX ფორმატი (რეალურად, ZIP-ში შეკუმშული XML დოკუმენტების კრებული) ინახავს მრავალ ფურცელს, უჯრედის ტიპებს (ტექსტი, რიცხვი, თარიღი, ლოგიკური), ფორმულებს და ფორმატირებას. JSON, თავის მხრივ, გთავაზობთ ტიპიზირებულ, ჩადგმულ სტრუქტურას — ობიექტებს, მასივებს, რიცხვებს, ლოგიკურ მნიშვნელობებს (true/false) და null-ს.
ამ ინსტრუმენტის მთავარი განსხვავება ისაა, რომ ის ინარჩუნებს Excel-ის უჯრედების ტიპებს JSON-ში: რიცხვითი მნიშვნელობები (მაგ., 42, 3.14) გადაიქცევა JSON-ის Number ტიპად, ლოგიკური უჯრედები (TRUE/FALSE) — Boolean-ად, ხოლო ცარიელი უჯრედები — ცარიელ სტრიქონებად. ეს მკვეთრად განსხვავდება CSV-სგან, სადაც ყველაფერი იქცევა ბრჭყალებში ჩასმულ ტექსტად. CSV-ში რიცხვი "42" იქნება სტრიქონი, JSON-ში — 42 (რიცხვი).
თუმცა, უნდა გვახსოვდეს, რომ XLSX-ის ფორმატირება (შრიფტები, ფერები, საზღვრები) იკარგება. ფორმულები არ გამოითვლება — იწერება მხოლოდ ბოლოს შენახული მნიშვნელობა. და მხოლოდ პირველი ფურცელი მუშავდება.
XLSX ფაილის შიდა სტრუქტურა: ZIP-არქივი XML-ფაილებით
XLSX ფაილი არ არის ბინარული ფორმატი (როგორც ძველი XLS). ის OOXML (Office Open XML) სტანდარტს ემყარება. თუ XLSX ფაილს დაარქმევთ.zip-ს და გახსნით, ნახავთ შემდეგ სტრუქტურას:
[Content_Types].xml— ფაილში შემავალი კომპონენტების ტიპები_rels/.rels— ურთიერთობების XMLxl/workbook.xml— სამუშაო წიგნის აღწერა (ფურცლების სია)xl/worksheets/sheet1.xml— პირველი ფურცლის მონაცემებიxl/sharedStrings.xml— ყველა ტექსტური უჯრედის ერთიანი საცავიxl/styles.xml— ფორმატირების ინფორმაცია
ეს იერარქიული სტრუქტურა საშუალებას იძლევა, ფაილი შეიცავდეს მრავალ ფურცელს, თითოეულს საკუთარი XML-ით. ინსტრუმენტი კითხულობს მხოლოდ sheet1.xml-ს, იგნორირებას უკეთებს styles.xml-ს (ფორმატირებას) და sharedStrings.xml-დან იღებს მხოლოდ ტექსტებს, რომლებიც ფაქტობრივად გამოიყენება მონაცემთა უჯრედებში.
უჯრედის ტიპების ზუსტი რუქა XLSX-დან JSON-ში
Excel-ის XLSX ფორმატი განსაზღვრავს უჯრედის ოთხ ძირითად ტიპს: s (shared string — ტექსტი), n (number), b (boolean) და e (error). JSON-ის ინსტრუმენტი ამ ტიპებს შემდეგნაირად რუკავს:
| XLSX უჯრედის ტიპი | JSON ტიპი | მაგალითი XLSX-ში | მაგალითი JSON-ში |
|---|---|---|---|
s (shared string) |
string | "სახელი" | "სახელი" |
n (number) |
number | 42 | 42 |
b (boolean) |
boolean | TRUE | true |
| ცარიელი უჯრედი | empty string "" |
(ცარიელი) | "" |
e (error) |
string | #DIV/0! | "#DIV/0!" |
თარიღების შემთხვევაში, Excel ინახავს მათ რიცხვითი მნიშვნელობებით (serial number) — 1900 წლის 1 იანვრიდან დღეების რაოდენობა (Windows-ისთვის). კონვერტორი წერს მას ISO 8601 სტრიქონად UTC-ში, მაგალითად, "2023-08-15T00:00:00.000Z". თუ გჭირდებათ თარიღის ანალიზი, ეს უნდა გააკეთოთ JSON-ის მიღების შემდეგ.
როგორ მუშაობს ინსტრუმენტი: კონფიდენციალურობა ბრაუზერში
მთელი კონვერტაცია ხორციელდება თქვენს ბრაუზერში. თქვენი ბრაუზერი აანალიზებს სამუშაო წიგნს – XML ნაწილების ZIP პაკეტს – და წერს კონვერტირებულ გამომავალს თქვენს მოწყობილობაზე. სერვერზე არ იგზავნება არცერთი ბაიტი. ეს ნიშნავს:
- კონფიდენციალურობა: თუ თქვენი XLSX შეიცავს მგრძნობიარე მონაცემებს – თანამშრომლების ხელფასებს, მომხმარებელთა საკონტაქტო სიებს, ფინანსურ პროგნოზებს – ის არასოდეს ტოვებს თქვენს მანქანას. არ არსებობს ატვირთვის ნაბიჯი, რომელიც აღირიცხება ან შემოწმდება.
- სიჩქარე: ფაილებისთვის, რომლებიც ზომის ლიმიტზე ნაკლებია, კონვერტაცია სრულდება რამდენიმე წამში. არ არსებობს ქსელის შეყოვნება.
თუმცა, არსებობს შეზღუდვები. ბრაუზერის მეხსიერება და დამუშავების ძალა ადგენს ზღვარს. ინსტრუმენტი აწესებს მკაცრ ლიმიტებს: 8 MB თითო ფაილზე, 10,000 სტრიქონი და 200 სვეტი თითო ცხრილზე. თუ რომელიმე ლიმიტი გადაჭარბებულია, კონვერტაცია ჩერდება და ნაჩვენებია შესაბამისი შეცდომა. კონვერტაცია, რომელიც დაახლოებით 12 წამზე მეტხანს გრძელდება, ასევე ჩერდება შეტყობინებით: "ეს კონვერტაცია ძალიან დიდ დროს მოითხოვს. სცადეთ უფრო მცირე ფაილი.".
შეყვანისა და გამოყვანის მონაცემები: ზუსტი სპეციფიკაცია
შეყვანა:
- ფორმატი: XLSX (Excel-ის ღია XML ფორმატი, *.xlsx)
- მიწოდება: drag-and-drop ან ფაილის არჩევის ღილაკი
- მხოლოდ ერთი ფაილი ერთდროულად
- იკითხება მხოლოდ პირველი ფურცელი
გამოყვანა:
- ფორმატი: JSON (JavaScript Object Notation)
- სტრუქტურა: ობიექტების მასივი, სადაც თითოეული ობიექტი წარმოადგენს ცხრილის ერთ სტრიქონს, ხოლო გასაღებები — პირველი სტრიქონის (header) უჯრედების ტექსტებს
- ჩამოტვირთვა: მზა JSON ფაილი
- პრევიუ: გარდაქმნილი მონაცემების ნახვა ბრაუზერში (პირველი 8 სტრიქონი და 8 სვეტი)
- მეტრიკა: JSON-ის ზომა, სტრიქონებისა და სვეტების რაოდენობა
მაგალითი:
XLSX-ის ცხრილი:
| Name | Age | Active |
|---|---|---|
| Alice | 30 | TRUE |
| Bob | 25 | FALSE |
შედეგი JSON:
[
{"Name": "Alice", "Age": 30, "Active": true},
{"Name": "Bob", "Age": 25, "Active": false}
]
წესები, შეზღუდვები და შეცდომების მართვა
ინსტრუმენტი მკაცრად იცავს შემდეგ წესებს:
- ფაილის ზომა: თუ XLSX ფაილი აღემატება 8 MB ზღვარს, ნაჩვენებია: "This file is too large. Use a file under ‹max›."
- სტრიქონების რაოდენობა: თუ 10,000-ზე მეტი სტრიქონია — იგივე ტიპის შეცდომა
- სვეტების რაოდენობა: თუ 200-ზე მეტი სვეტია — იგივე ტიპის შეცდომა
- მხოლოდ XLSX: თუ ფაილი სხვა ფორმატისაა — "Choose a CSV, JSON or XLSX file."
- XLSX-ის გახსნის შეცდომა: თუ ფაილი დაზიანებულია — "This Excel file could not be opened."
- ცარიელი ცხრილი: თუ პირველ ფურცელზე მონაცემები არ არის — "This file has no table rows."
- სხვა შეცდომები: "Could not convert this file.", "Conversion cancelled.", "ეს კონვერტაცია ძალიან დიდ დროს მოითხოვს. სცადეთ უფრო მცირე ფაილი."
რატომ იკარგება ფორმულები? XLSX ინახავს ფორმულას (მაგ., =A1+B1) და მის ბოლოს გამოთვლილ მნიშვნელობას. ინსტრუმენტი, რომელიც კითხულობს ფაილს, იღებს მხოლოდ შენახულ მნიშვნელობას, რადგან ბრაუზერში Excel-ის ძრავის მსგავსად ფორმულების გამოთვლა რთულია. ამიტომ, ყოველთვის განაახლეთ XLSX ფაილი Excel-ში (ან LibreOffice-ში) კონვერტაციამდე, რათა ფორმულები გამოითვალოს.
ვის სჭირდება ეს ინსტრუმენტი?
-
ვებ-დეველოპერი: იღებს პროდუქტების კატალოგს Excel-ში, სჭირდება JSON API-სთვის — იყენებს ინსტრუმენტს, რათა მონაცემები მზად იყოს fetch() ან axios-ით გამოსაყენებლად.
-
მონაცემთა ანალიტიკოსი: ყოველკვარტალური ანგარიში XLSX-ში — მაჩვენებლები, რიცხვები, Boolean-ები JSON-ში, რათა მოხდეს Python ან R-ში იმპორტი.
-
გუნდი, რომელიც თანამშრომლობს გარე პარტნიორებთან: ბევრი კომპანია ითხოვს JSON-ს, რადგან ის მონაცემთა ბაზებთან, NoSQL-თან ან cloud-თან ინტეგრაციისთვისაა. ინსტრუმენტი გამორიცხავს Excel-ში ხელით ცვლილებებს.
-
კონფიდენციალურობის მოთხოვნის მქონე მომხმარებელი: მაგ., HR-ის მონაცემები, ხელფასები — ყველაფერი მუშავდება ლოკალურად, არსად არ იგზავნება.
FAQ: ხშირად დასმული კითხვები
Q1: რატომ ვერ ვხედავ მონაცემებს მეორე ფურცლიდან? A: ინსტრუმენტი კითხულობს მხოლოდ XLSX-ის პირველ ფურცელს. თუ გჭირდებათ სხვა ფურცლის მონაცემები, ჯერ Excel-ში გადაიტანეთ ისინი პირველ ფურცელზე ან გამოიყენეთ XLSX-ის კონვერტაცია მრავალი ფურცლის მხარდაჭერის მქონე ინსტრუმენტით.
Q2: მუშაობს თუ არა Google Sheets-ის ან LibreOffice-ის XLSX ფაილებზე? A: დიახ, OOXML სტანდარტი ერთიანია, მაგრამ Google Sheets-ში XLSX-ში ექსპორტისას ზოგჯერ იკარგება ტიპები. LibreOffice-ის XLSX ფაილები ჩვეულებრივ კარგად მუშაობს.
Q3: რა მოხდება, თუ ჩემი XLSX ფაილი შეიცავს merged cells (შეერთებულ უჯრედებს)? A: მხოლოდ გაერთიანებული რეგიონის ზედა მარცხენა უჯრედი ინარჩუნებს თავის მნიშვნელობას. რეგიონის ყველა სხვა უჯრედი გამომავალ JSON-ში ცარიელი სტრიქონები ხდება. რეკომენდაცია: გააუქმეთ merged cells Excel-ში კონვერტაციამდე.
Q4: რატომ გამოჩნდა "This file is too large" ჩემს 5 MB ფაილზე? A: ლიმიტი 8 MB ეხება ფაილის ზომას, მაგრამ ასევე სტრიქონებისა და სვეტების რაოდენობას (10,000 სტრიქონი და 200 სვეტი). XLSX-ის შეკუმშვის გამო, მცირე ზომის ფაილს შეიძლება ჰქონდეს მილიონი უჯრედი. შეამცირეთ მონაცემების მოცულობა.
Q5: შემიძლია თარიღების ანალიზი JSON-ში? A: XLSX-ში თარიღები ინახება რიცხვით (serial number). JSON-ში ისინი გამოჩნდება ISO 8601 სტრიქონებად. თქვენ უნდა გამოიყენოთ JavaScript-ის new Date() ან მსგავსი ფუნქცია, რათა გადააქციოთ ისინი წასაკითხ თარიღად.
Q6: რატომ ვერ ვიხსნი XLSX-ს, რომელიც Excel-ში მშვენივრად მუშაობს? A: შესაძლოა, XLSX ფაილი დაზიანებულია, ან ის არ არის სრულად OOXML-თან თავსებადი. სცადეთ ფაილის ხელახლა შენახვა Excel-ში "Save As" -> "Excel Workbook (*.xlsx)" და შემდეგ კონვერტაცია.