Excel-оос JSON руу хөрвүүлэх: XLSX файлыг хөтөч дээр шууд JSON болгох
XLSX-ийн дотоод бүтэц ба JSON формат руу хөрвүүлэх ялгаа
XLSX файлыг JSON руу хөрвүүлэх нь CSV руу хөрвүүлэхээс үндсээрээ ялгаатай. XLSX файл нь шахсан ZIP архив дотор XML өгөгдөл агуулдаг. Энэхүү бүтэц нь олон хүснэгтийн хуудас (worksheet), нүдний төрөл (текст, тоо, огноо, boolean), томьёо (formula), баялаг форматлалтыг (фонт, өнгө, хүрээ) багтааж чаддаг. Харин JSON нь төрөлжсөн, үүрлэх чадвартай формат бөгөөд обьект, массив, тоо, boolean, null утгыг дэмждэг.
XLSX-оос JSON руу хөрвүүлэх үед тоон болон boolean нүдний утгууд нь JSON-ийн төрөлжсөн утгууд хэвээр үлдэнэ. Жишээлбэл, Excel-ийн 123 тоо нь JSON-д "123" гэсэн мөр биш, харин 123 гэсэн тоо болно. TRUE утга нь true болно. Харин CSV формат нь бүх утгыг хашилттай мөр болгон хавтгайруулж, төрлийг хадгалахгүй.
Гол ялгаа нь JSON нь хүснэгтийн бүтцийг обьектуудын массив хэлбэрээр дүрсэлж чаддагт оршино. Эхний мөр нь түлхүүр (key) болж, дараагийн мөр бүр нэг обьект болно. Жишээ нь:
[
{"Нэр": "Бат", "Нас": 25, "Идэвхтэй": true},
{"Нэр": "Дорж", "Нас": 30, "Идэвхтэй": false}
]
XLSX хүснэгт нь өөрөө хавтгай бүтэцтэй тул үүрлэсэн JSON бүтэц автоматаар үүсэхгүй. Хэрэв танд үүрлэсэн JSON хэрэгтэй бол хөрвүүлэлтийн дараа өөрөө зохицуулах шаардлагатай.
Нүдний төрлийн JSON руу буулгалт ба томьёоны алдагдал
XLSX файлын нүд бүр тодорхой төрөлтэй: текст (string), тоо (number), boolean (true/false), огноо (date), алдаа (error). Excel-ийн төрөл бүр JSON-д дараах байдлаар бууна:
| Excel төрөл | JSON төрөл | Жишээ |
|---|---|---|
| Текст (String) | мөр (string) | "Улаанбаатар" |
| Тоо (Number) | тоо (number) | 123.45 |
| Boolean | boolean | true эсвэл false |
| Огноо (Date) | мөр (string) | "2024-01-15T00:00:00.000Z" |
| Хоосон нүд | null | null |
Огноо нь Excel-д хадгалагдсан утгаас хамаарч ISO 8601 формат руу хөрвүүлэгдэнэ. Excel нь огноог 1899 оны 12-р сарын 30-наас хойшхи өдрийн тоогоор хадгалдаг. Жишээ нь, 45123 гэсэн тоо нь 2023 оны 6-р сарын 1-нд тохирно. Хөрвүүлэгч энэ тоог зохих огнооны мөр болгон хувиргадаг.
Томьёо (formula) агуулсан нүднүүдийн хувьд зөвхөн хадгалагдсан харагдах утга л хэрэглэгдэнэ. Томьёог дахин тооцоолохгүй. Жишээ нь, =A1+B1 томьёотой нүдэд 45 гэсэн утга хадгалагдсан бол JSON-д 45 гэж гарна. Хэрэв Excel файлыг нээгээд томьёог дахин тооцоолуулаагүй бол хуучин утга л үлдэнэ. Энэ нь чухал хязгаарлалт: томьёо нь хөрвүүлэлтээр шинэчлэгдэхгүй.
Нүдний форматлалт (фонт, өнгө, хүрээ, дэвсгэр өнгө) бүрэн хасагдана. Зөвхөн өгөгдлийн утга л JSON-д орно. Нэгдсэн нүднүүд (merged cells) нь зөвхөн дээд зүүн нүдний утгыг хадгалж, бусад нүд хоосон (null) болно.
Зөвхөн эхний хүснэгтийн хуудас – нэг хуудасны хязгаарлалт
Хэрэгсэл нь зөвхөн XLSX файлын эхний хүснэгтийн хуудас (first worksheet)-ыг уншина. Олон хуудастай Excel файлын бусад хуудсуудыг үл тоомсорлодог. Хэрэв танд хоёр дахь хуудаснаас өгөгдөл хэрэгтэй бол тусдаа хөрвүүлэлт хийх шаардлагатай.
Нэг хүснэгтийн хуудас дотор зөвхөн тэгш өнцөгт өгөгдөл (tabular data) байх ёстой. Эхний мөрийг баганын гарчиг (header) болгон ашигладаг. Хэрэв гарчиг нь олон мөрөөр (multi-row header) хийгдсэн бол зөвхөн эхний мөрийг түлхүүр болгоно. Жишээ нь, "Нэр" ба "Хаяг" гэсэн хоёр мөрийн гарчигтай бол зөвхөн "Нэр" л түлхүүр болно.
Хэрэв эхний хүснэгтийн хуудас ямар ч өгөгдлийн мөр агуулаагүй бол "Энэ файлд хүснэгтийн мөр байхгүй байна." гэсэн алдаа гарна. Хоосон мөрүүд (бүх нүд хоосон) ерөнхийдөө орхигдоно.
Хөтөч дээрх боловсруулалт ба нууцлалын ашиг тус
XLSX-ээс JSON руу хөрвүүлэлт бүхэлдээ хэрэглэгчийн хөтөч дотор явагдана. Файлыг ямар ч сервер рүү илгээхгүй. Энэ нь дараах ашиг тустай:
- Нууцлал: Өгөгдөл таны компьютерээс хэзээ ч гарахгүй. Ажилтны цалин, харилцагчийн мэдээлэл зэрэг мэдээллийг аюулгүй хөрвүүлнэ.
- Хурд: Хөтөч дээрх JavaScript код нь XLSX файлыг задлан, JSON болгон хувиргадаг. Том файлын хувьд сервер хүлээхгүйгээр шууд боловсруулна.
- Хязгаарлалт: Хэдийгээр файлын хэмжээ, мөр, баганын тоонд хязгаар тавьсан ч энэ нь хөтчийн санах ойн хязгаартай холбоотой.
Хөтөч нь XLSX файлыг шууд задлах чадваргүй. Энд ашиглагдаж буй JavaScript сан нь ZIP архивыг задалж, XML өгөгдлийг уншиж, хүснэгтийн бүтцийг сэргээдэг. Энэ нь JSZip болон xlsx гэх мэт сангуудыг ашигладаг.
Үр дүнгийн хүснэгтийн бүтэц ба нийтлэг бэрхшээлүүд
JSON гаралт нь хавтгай массив хэлбэртэй. Хэрэв XLSX өгөгдөл нь тэгш өнцөгт биш бол (жишээ нь, өөр өөр мөр өөр тооны баганатай) асуудал үүснэ. Ердийн тохиолдолд:
- Багана бүр ижил тооны мөртэй байх ёстой.
- Нэгдсэн нүднүүд (merged cells) нь зөвхөн дээд зүүн нүдний утгыг агуулна.
- Нууцлагдсан баганууд (hidden columns) хөрвүүлэлтэд орно. Хэрэв нууцлагдсан баганыг хасахыг хүсвэл файлыг нээж, тэдгээрийг устгах хэрэгтэй.
- Хоосон мөрүүд (бүх нүд хоосон) ихэвчлэн орхигдоно. Гэхдээ зарим нүд хоосон, зарим нь өгөгдөлтэй мөрүүд үлдэх болно.
Хэрэв таны XLSX файлд зураг, график, хүснэгтийн загвар (table style) байгаа бол тэдгээр нь бүрэн хасагдана. Зөвхөн өгөгдөл л үлдэнэ.
Амжилтгүй хөрвүүлэлтийн алдааны мэдээллүүд ба хязгаарлалтууд
Хэрэгсэл нь хэд хэдэн тохиолдолд алдааны мэдээлэл өгдөг:
| Алдааны мэдээлэл | Шалтгаан |
|---|---|
| "Энэ Excel файлыг нээх боломжгүй байна." | XLSX файл гэмтсэн эсвэл буруу форматтай. |
| "Энэ файлд хүснэгтийн мөр байхгүй байна." | Эхний хүснэгтийн хуудас хоосон. |
| "Файл хэтэрхий том байна. ‹max› хэмжээтэй файл ашиглана уу." | Файлын хэмжээ хязгаараас хэтэрсэн. |
| "Хүснэгтэд ‹max› мөрөөс илүү байна." | Мөрийн тоо хязгаараас хэтэрсэн. |
| "Хүснэгтэд ‹max› баганаас илүү байна." | Баганын тоо хязгаараас хэтэрсэн. |
| "CSV, JSON эсвэл XLSX файл сонгоно уу." | Бусад төрлийн файл сонгосон. |
| "Энэ файлыг хөрвүүлэх боломжгүй байна." | Ерөнхий алдаа. |
| "Хөрвүүлэлт цуцлагдсан." | Хэрэглэгч хөрвүүлэлтийг цуцалсан. |
| "Энэ хөрвүүлэлт хэтэрхий удаж байна. Жижиг файл ашиглана уу." | Хөтөч дээрх боловсруулалт хэт удаан. |
Хязгаарлалтууд нь хөтчийн санах ой, процессорын хүчин чадалтай холбоотой. Хэрэв та маш том XLSX файлтай бол (жишээ нь, 100,000 мөр) түүнийг жижиг хэсгүүдэд хувааж хөрвүүлэх нь дээр.
Түгээмэл асуултууд
XLSX файл олон хуудастай бол яаж хөрвүүлэх вэ?
Зөвхөн эхний хуудас хөрвүүлэгдэнэ. Бусад хуудсуудын өгөгдлийг хөрвүүлэхийн тулд та тусдаа XLSX файлууд үүсгэх эсвэл хуудас бүрийн өгөгдлийг тус тусад нь хадгалах хэрэгтэй.
Томьёотой нүднүүд яагаад тооцоологддоггүй вэ?
XLSX файлд томьёоны утга хадгалагдсан байдаг. Хэрэв файлыг Excel-д нээж хадгалаагүй бол томьёоны үр дүн шинэчлэгдэхгүй. Хөтөч дээрх хэрэгсэл нь зөвхөн хадгалагдсан утгыг л уншиж чадна.
Нэгдсэн нүднүүд (merged cells) хэрхэн хөрвүүлэгдэх вэ?
Нэгдсэн нүднүүдийн зөвхөн дээд зүүн нүдний утга л хадгалагдана. Бусад нүднүүд хоосон (null) болно. Хэрэв та нэгдсэн нүдний утгыг бүх мөрөнд хүргэхийг хүсвэл хөрвүүлэхийн өмнө Excel дээр нэгдлийг задалж, утгыг бүх нүдэнд хуулах хэрэгтэй.
Хөрвүүлэлтийн дараа файлын хэмжээ ихсэж болох уу?
Тийм. JSON нь CSV-ээс илүү том байж болно, учир нь түлхүүрүүд мөр бүрт давтагддаг. Жишээ нь, 10,000 мөртэй хүснэгтэд баганын нэрс 10,000 удаа давтагддаг. Энэ нь хэвийн зүйл.
Хөрвүүлэлтийн дараа өгөгдлийг хэрхэн баталгаажуулах вэ?
Та JSON гаралтыг хөтөч дээр шууд харах боломжтой. Өгөгдлийн тоо, төрөл, null утгуудыг шалгах хэрэгтэй. Жишээ нь, бүх тоо зөв буусан эсэхийг, огноо зөв форматтай эсэхийг шалгана.
Файлыг яагаад сервер рүү илгээхгүй вэ?
Нууцлалын аюулгүй байдлыг хангах үүднээс. Хэрэв таны XLSX файл хувийн мэдээлэл агуулж байгаа бол (жишээ нь, цалин, утасны дугаар) түүнийг сервер рүү илгээх нь эрсдэлтэй. Хөтөч дээрх боловсруулалт нь өгөгдлийг таны компьютерээс хэзээ ч гаргахгүй.