Langsung ke konten

Alat spreadsheet yang menjaga tipe data tetap benar

Sembilan alat untuk memindahkan tabel antara Excel, CSV, JSON, XML, PDF, dan OpenDocument. Tiga alat yang membutuhkan aplikasi spreadsheet lengkap mengirim file ke server kami, yang langsung menghapusnya begitu hasil unduhan Anda siap.

9 alat, tanpa daftar, tanpa watermark

Jika sebuah sistem meminta CSV, mulailah dengan Excel ke CSV; jika CSV terbuka di Excel sebagai satu kolom yang berantakan, gunakan CSV ke Excel; jika datanya akan dipakai di kode, gunakan CSV ke JSON atau JSON ke CSV. File .xls lama dan workbook OpenDocument ditangani oleh XLS ke XLSX, ODS ke XLSX, dan XLSX ke ODS, yang mempertahankan format dan grafik, sementara PDF ke Excel mengambil kembali tabel dari laporan yang file sumbernya tidak pernah dikirim ke Anda. Catatan di bawah membahas akar dari hampir setiap masalah konversi spreadsheet: perbedaan antara apa yang disimpan sebuah sel dan apa yang ditampilkannya kepada Anda.

Apa yang sebenarnya disimpan sebuah sel

Sebuah sel spreadsheet menyimpan dua hal terpisah: nilai dan format angka. Nilai 0.15 bisa tampil sebagai 15%, sebagai 0.15, sebagai £0.15, atau sebagai 15.00%, dan tidak satu pun tampilan itu mengubah nilainya sedikit pun. Inilah fakta paling berguna tentang spreadsheet, dan karena itulah Excel ke CSV meminta Anda memilih antara “Seperti tampil di Excel” dan “Angka mentah, tanggal ISO” alih-alih menebak. “Seperti tampil di Excel” menulis persis teks yang terlihat di layar — 15/03/2024, 1,234.50, 12% — sama seperti fitur Save As milik Excel sendiri dan sesuai harapan orang yang membaca CSV-nya. “Angka mentah, tanggal ISO” menulis angka polos dan tanggal ISO, yang diharapkan oleh database atau skrip. Pilih yang salah, dan impor akan gagal dengan cara yang membuat data tampak rusak.

Tanggal adalah angka yang menyamar sebagai tanggal. Sel tanggal menyimpan hitungan hari berurutan, dan titik awal hitungannya bergantung pada file: workbook dari Excel Windows menghitung sejak 1900, workbook dari Excel Mac versi lama menghitung sejak 1904, dan keduanya berselisih 1.462 hari. Sistem 1900 bahkan lebih aneh — sistem ini menganggap 29 Februari 1900 pernah ada, sebuah bug warisan Lotus 1-2-3 yang terus dipertahankan demi kompatibilitas. Alat-alat di sini membaca penanda titik awal milik setiap workbook dan mereproduksi hari kabisat palsu itu tepat di tempatnya, sehingga tanggal yang dikonversi di sini cocok dengan yang ditampilkan Excel, bukan bergeser empat tahun dan satu hari.

Rumus dan hasilnya disimpan berdampingan. Workbook menyimpan teks rumus beserta nilai terakhir yang dihitungnya. Konversi dari workbook ke workbook — ODS ke XLSX, XLS ke XLSX, XLSX ke ODS — membawa rumusnya sendiri, diterjemahkan di antara dua kosakata fungsi, sehingga sheet tetap menghitung ulang saat Anda mengeditnya; segelintir fungsi yang hanya ada di salah satu sisi akan tampil sebagai #NAME? sampai Anda menggantinya. Semua yang keluar dari dunia spreadsheet — CSV, JSON, XML — hanya membawa hasil perhitungannya, karena tidak satu pun format itu mengenal konsep rumus.

CSV tidak bisa mewakili sebagian besar isi workbook, dan berpura-pura sebaliknya adalah awal hilangnya data. CSV tidak punya sheet, jadi setiap sheet menjadi file tersendiri (dan sebuah ZIP jika Anda menginginkan semuanya). CSV tidak punya tipe sel, jadi setiap kolom isian adalah teks sampai ada yang menebaknya. CSV tidak punya format, rumus, grafik, gambar, warna, atau lebar kolom. Sel yang digabung harus diselesaikan dengan salah satu cara — nilainya di sel pertama, atau diulang di seluruh area gabungan. Dan CSV tidak mencatat pemisahnya sendiri, pemisah desimalnya, maupun encoding-nya, itulah sebabnya file Eropa berpemisah titik koma dengan koma sebagai desimal masuk ke satu kolom di Excel versi AS, dan huruf beraksen berubah menjadi karakter aneh (mojibake) kecuali file diawali byte-order mark.

Teks yang terlihat seperti angka adalah sumber kerusakan yang sebenarnya. Excel menebak sel demi sel saat Anda membuka CSV: kode pos 01234 kehilangan angka nolnya, ID pesanan 16 digit menjadi 1.23457E+15 dan tidak bisa dipulihkan, dan nama gen SEPT2 berubah menjadi tanggal — masalah yang cukup serius sampai komunitas genetika mengganti nama gen-gen tersebut. CSV ke Excel justru memutuskan sekali per kolom, berdasarkan semua nilai di dalamnya, dan hanya mengonversi jika seluruh kolom sepakat; apa pun yang berawalan nol, dan bilangan bulat apa pun yang terlalu panjang untuk disimpan persis oleh angka JavaScript, tetap menjadi teks. JSON ke CSV menerapkan kehati-hatian yang sama ke arah sebaliknya, menyalin ID 64-bit digit demi digit, padahal kebanyakan konverter membulatkannya.

JSON dan XML masing-masing juga menghilangkan sesuatu. JSON sama sekali tidak punya tipe tanggal, jadi tanggal dikirim sebagai teks dan kode penerimanya harus tahu apa yang sedang dibacanya. XML data hanya membawa nilai, tanpa format, grafik, atau gambar — persis yang dibutuhkan feed impor, tetapi bukan yang Anda inginkan jika tujuannya menjaga workbook tetap utuh.

Kapan browser memang bukan alat yang tepat

Tujuh dari alat ini tidak pernah mengirim file Anda ke mana pun: Excel ke CSV, CSV ke Excel, CSV ke JSON, JSON ke CSV, XML ke Excel, Excel ke XML, dan PDF ke Excel. Tidak ada yang disimpan, dan itu penting ketika file-nya berisi daftar gaji atau daftar pelanggan. Empat alat berbeda — Excel ke PDF, ODS ke XLSX, XLS ke XLSX, dan XLSX ke ODS menyerahkan file ke server kami, karena menata halaman cetak, atau membawa font, warna, conditional formatting, dan grafik antarformat, bukanlah sesuatu yang bisa dipalsukan oleh halaman web. File tersebut dikirim melalui koneksi terenkripsi, dikonversi, lalu dihapus begitu hasil unduhan Anda siap. Jika server tidak bisa dijangkau, masing-masing beralih ke konverternya sendiri, yang mempertahankan nilai, rumus, format angka, sel gabungan, dan lebar kolom, tetapi tidak font, warna, atau grafik, dan memberi tahu Anda bahwa hal itu terjadi.

Ukuran. Alat yang berjalan di browser menyimpan seluruh tabel di memori, jadi batasnya adalah jatah memori tab Anda — lancar hingga puluhan megabyte, mulai kerepotan di atas seratus, dan mustahil untuk ekspor berukuran beberapa gigabyte. Konverter workbook dibatasi 50 MB per file dan Excel ke PDF 40 MB, dan keduanya memberi tahu hal itu sebelum konversi, bukan sesudahnya. Satu sheet Excel sendiri berhenti di 1.048.576 baris, yang merupakan batas formatnya, bukan batas kami; CSV ke Excel melanjutkan ke sheet tambahan dengan header diulang, alih-alih diam-diam memotong data Anda.

Pengolahan data sungguhan. Konverter bukanlah database. Menggabungkan dua tabel, menghapus duplikat, mengagregasi, memfilter sepuluh juta baris, atau memprofilkan ekspor yang berantakan adalah pekerjaan untuk alat yang dibuat khusus, dan alat gratisnya sangat bagus: csvkit untuk mengolah CSV dengan cepat lewat command line, Miller untuk hal serupa pada JSON dan CSV sekaligus, qsv untuk kecepatan pada file raksasa, DuckDB untuk menjalankan SQL sungguhan langsung pada file CSV atau Parquet, dan pandas jika Anda sudah bekerja di Python.

Makro, dan apa pun yang bisa dijalankan. VBA tidak bisa dibawa ke .xlsx, yang memang tidak punya tempat untuknya, dan juga tidak dibawa ke .ods karena LibreOffice hanya menjalankan sebagian VBA dan perbedaannya akan muncul sebagai angka yang salah, bukan sebagai error. Jika sebuah workbook bergantung pada makronya, simpan file aslinya di samping salinan hasil konversi. File yang dilindungi kata sandi harus dihapus kata sandinya terlebih dahulu, di program yang memasangnya.

Otomatisasi. Alat-alat ini berjalan saat seseorang mengeklik. Mengonversi feed setiap malam adalah pekerjaan command line: LibreOffice dalam mode headless menangani semua format di halaman ini.

Memilih di antara alat yang terdengar mirip

Excel ke CSV vs Excel ke XML. Keduanya membaca workbook dan menulis file data datar, dan tujuannyalah yang menentukan. CSV untuk spreadsheet, database, dan apa pun yang meminta “unggah CSV”. XML untuk impor dan integrasi yang menetapkan nama elemen — Anda mengatur nama root dan nama baris, header menjadi nama elemen, dan nilai keluar sebagai angka polos dan tanggal ISO. Excel ke XML juga bisa menulis XML Spreadsheet 2003, yang merupakan hal yang sama sekali berbeda: format yang dibuka kembali oleh Excel sebagai workbook, untuk saat sebuah sistem meminta “Excel XML”, bukan XML data Anda sendiri.

CSV ke Excel vs CSV ke JSON. Parser yang sama, deteksi tipe per kolom yang sama, hasil yang berbeda. CSV ke Excel menghasilkan .xlsx dengan tanggal dan angka sungguhan yang bisa Anda jumlahkan dan urutkan, serta baris header yang dibekukan dan bisa difilter — untuk manusia. CSV ke JSON menghasilkan array objek, array dari array, objek berkunci, atau JSON Lines — untuk kode. Jika jawabannya “keduanya”, konversikan ke Excel untuk manusia dan ke JSON untuk pipeline; hasilnya akan sepakat, karena tipe kolomnya diputuskan dengan cara yang sama.

XML ke Excel vs Excel ke XML. Bukan sekadar arah yang berlawanan. XML ke Excel harus menemukan tabelnya terlebih dahulu: alat ini mencari elemen yang berulang di bawah induk yang sama — setiap <book> dalam katalog, setiap <item> dalam feed RSS — memberi skor tiap kelompok dan menawarkan sisanya dalam satu klik, lalu meratakan atribut dan elemen bersarang menjadi kolom yang dinamai sesuai path-nya. Excel ke XML tidak perlu mencari apa pun, karena baris Anda sudah merupakan record-nya.

XLS ke XLSX vs CSV ke Excel. Keduanya berakhir sebagai workbook modern. XLS ke XLSX meningkatkan file biner Excel 97–2003 yang asli dan mempertahankan semua isinya — sheet, rumus, format, grafik. CSV ke Excel membangun workbook dari teks biasa yang tidak pernah punya semua itu. Irisannya adalah kasus tengah yang menjengkelkan: banyak aplikasi web mengekspor tabel HTML atau file XML lalu menamainya .xls. XLS ke XLSX mengenali file seperti itu apa adanya dan menyimpannya sebagai workbook sungguhan.

PDF ke Excel vs Excel ke PDF. Arah berlawanan, dan hanya salah satunya yang andal. Excel ke PDF adalah pekerjaan tata letak: workbook sudah tahu area cetaknya, pemisah halamannya, dan formatnya, dan konverter tinggal menggambarnya. PDF ke Excel adalah arah yang sulit, karena PDF mencatat di mana setiap karakter digambar dan tidak mencatat apa pun tentang sel mana tempatnya — kolom-kolomnya disimpulkan dari posisi. Hasilnya bagus pada tabel rapi bergaris, perlu dirapikan di bagian sel yang digabung atau teks yang terbungkus ke beberapa baris, membuat ulang nilai tetapi bukan format atau rumus, dan memberi setiap halaman PDF sheet-nya sendiri. Jika workbook aslinya masih ada, mintalah file itu.

ODS ke XLSX vs Excel ke CSV untuk file .ods. Excel ke CSV bisa membuka .ods dan memberikan nilainya kepada Anda. ODS ke XLSX mempertahankan workbook sebagai workbook, lengkap dengan rumus, format, dan grafiknya. Gunakan konverter ini jika seseorang perlu bekerja di dalam file itu, dan jalur CSV jika sebuah sistem membutuhkan angka-angkanya.

Dasar yang dipakai alat-alat ini

Mesin open-source yang melakukan pekerjaan sebenarnya, dan spesifikasi yang diterapkannya.

  • SheetJSApache-2.0 — membaca dan menulis setiap format workbook di sini.
  • LibreOffice CalcMPL-2.0 — menangani konversi yang tidak bisa dilakukan browser, jika tersedia.
  • RFC 4180Specification — adalah hal terdekat yang dimiliki CSV sebagai standar, dan menjelaskan mengapa file-file CSV saling berbeda.

Pertanyaan yang sering diajukan

Apakah spreadsheet saya disimpan di suatu tempat?

Tidak untuk Excel ke CSV, CSV ke Excel, CSV ke JSON, JSON ke CSV, XML ke Excel, Excel ke XML, atau PDF ke Excel — alat-alat itu membaca file Anda dan menulis hasilnya di dalam tab ini, dan tidak ada yang dikirim ke mana pun. Excel ke PDF dan tiga konverter workbook memang mengirim file ke server kami melalui koneksi terenkripsi, karena alat-alat itu membutuhkan aplikasi spreadsheet sungguhan untuk menata halaman atau membawa format dan grafik antarformat; file dikonversi lalu langsung dihapus, dan tidak ada yang disimpan, dicatat, atau dibagikan.

Mengapa Excel merusak CSV saya saat saya hanya mengekliknya dua kali?

Karena Excel menebak setiap sel secara terpisah dan tidak pernah bertanya. Angka nol di depan hilang, ID panjang menjadi notasi ilmiah, tanggal tertukar antara format hari-dulu dan bulan-dulu, dan file berpemisah titik koma masuk ke satu kolom. CSV ke Excel memutuskan sekali per kolom berdasarkan semua nilainya dan menunjukkan setiap keputusan sebelum Anda mengunduh, sehingga Anda bisa memperbaikinya alih-alih baru mengetahuinya belakangan.

Mengapa muncul karakter aneh di tempat huruf beraksen saya?

CSV tidak mencatat encoding-nya sendiri, jadi Excel kembali ke code page regional lama di komputer Anda, kecuali file diawali byte-order mark. Pilih “UTF-8 dengan BOM (untuk Excel)” di Excel ke CSV, dan huruf beraksen, Sirilik, Arab, Tionghoa, serta emoji akan terbuka dengan benar. UTF-8 biasa tanpa penanda itu adalah pilihan yang tepat untuk database dan kode, yang memang tidak menginginkannya.

Apa yang terjadi pada rumus saya?

Dari workbook ke workbook, rumus dibawa sebagai rumus dan tetap menghitung; fungsi yang hanya ada di salah satu sisi tampil sebagai #NAME? sampai Anda menggantinya. Saat keluar ke CSV, JSON, atau XML, hanya hasil perhitungannya yang ditulis, karena format-format itu tidak punya tempat untuk rumus. Ke arah sebaliknya, sel yang diawali = ditulis sebagai teks, tidak pernah sebagai rumus aktif, sehingga CSV berbahaya tidak bisa menjalankan apa pun saat workbook dibuka.

Apakah ada batas ukuran file atau batas harian?

Tanpa akun, tanpa kuota, tanpa batas harian. Alat berbasis browser dibatasi oleh memori perangkat Anda; konverter workbook menerima file hingga 50 MB dan Excel ke PDF hingga 40 MB, dan keduanya memberi tahu dengan jelas jika file Anda lebih besar.

Apakah akan ada watermark atau batas jumlah baris?

Tidak. Tidak ada apa pun di sini yang membatasi jumlah baris, membubuhkan tanda versi uji coba pada sheet, atau memotong data Anda. Satu-satunya batas baris adalah batas Excel sendiri, 1.048.576, dan file yang lebih panjang dilanjutkan ke sheet tambahan alih-alih dipotong. Iklan di halaman inilah yang membuatnya tetap gratis.