Saya telah menggunakan Apache POI selama beberapa waktu untuk membaca file Excel 2003 yang ada secara terprogram. Sekarang saya memiliki persyaratan baru untuk membuat seluruh file .xls di dalam memori (masih menggunakan Apache POI) dan kemudian menulisnya ke file di akhir. Satu-satunya masalah yang menghalangi saya adalah penanganan sel dengan kurma.
Perhatikan kode berikut:
Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
Ketika saya menulis buku kerja yang berisi sel ini ke sebuah file dan membukanya dengan Excel, sel tersebut ditampilkan sebagai angka. Ya, saya menyadari bahwa Excel menyimpan 'tanggal' sebagai jumlah hari sejak 1 Januari 1900 dan itulah yang diwakili oleh angka dalam sel.
PERTANYAAN: Panggilan API apa yang dapat saya gunakan dalam POI untuk memberitahukan bahwa saya ingin format tanggal default diterapkan ke sel tanggal saya?
Idealnya saya ingin sel spreadsheet ditampilkan dengan format tanggal default yang sama dengan yang ditetapkan Excel jika pengguna membuka spreadsheet secara manual di Excel dan mengetik dalam nilai sel yang dikenali Excel sebagai tanggal.
sumber
BuiltinFormats
yang mencantumkan semua format standar (bukan hanya format tanggal) yang diketahui Excel. Saya tetap menggunakan salah satu parameter tersebut untuk digunakan sebagai parameter saya padagetFormat()
metode yang ditunjukkan pada cuplikan di atas.getCreationHelper()
dibutuhkan? Saya bekerja dengan Mule sekarang untuk menghasilkan file keluaran Excel dan saya sebenarnya dapat menggunakancreateDataFormat()
tanpa bantuan kreasi dan menghasilkan file Excel dalam pengujian saya. Apakah ada kerugian jika tidak menggunakannya? Terima kasih!mm/dd/yyyy
. Ketika saya menggunakan format lain, excel menampilkan kesalahanFile error, some number formats may have been lost
, itu memangDate
tipe tampilan di excel. Saya tidak tahu bagaimana ini bisa diperbaiki.Untuk menyetel ke default jenis Excel Tanggal (default ke lokal tingkat OS / -> yaitu xlsx akan terlihat berbeda ketika dibuka oleh orang Jerman atau Inggris / dan ditandai dengan tanda bintang jika Anda memilihnya di pemilih format sel Excel) Anda harus:
Saya melakukannya dengan xlsx dan berhasil dengan baik.
sumber
Contoh ini untuk bekerja dengan jenis file .xlsx. Contoh ini berasal dari halaman .jsp yang digunakan untuk membuat spreadsheet .xslx.
sumber
Saya menulis jawaban saya di sini karena mungkin bermanfaat bagi pembaca lain, yang mungkin memiliki persyaratan yang sedikit berbeda dari penanya di sini.
Saya menyiapkan template .xlsx; semua sel yang akan diisi tanggal, sudah diformat sebagai sel tanggal (menggunakan Excel).
Saya membuka template .xlsx menggunakan Apache POI dan kemudian hanya menulis tanggal ke sel, dan berhasil.
Dalam contoh di bawah ini, sel A1 sudah diformat dari dalam Excel dengan format tersebut
[$-409]mmm yyyy
, dan kode Java hanya digunakan untuk mengisi sel.Saat Excel dibuka, tanggal diformat dengan benar.
sumber
Contoh kode ini dapat digunakan untuk mengubah format tanggal. Di sini saya ingin mengubah dari tttt-BB-hh ke hh-BB-tttt. Berikut
pos
adalah posisi kolom.sumber
Untuk mengetahui format string yang digunakan oleh Excel tanpa harus menebaknya: buat file excel, tulis tanggal di sel A1 dan format sesuai keinginan. Kemudian jalankan baris berikut:
Kemudian salin-tempel string yang dihasilkan, hapus garis miring terbalik (misalnya
d/m/yy\ h\.mm;@
menjadid/m/yy h.mm;@
) dan gunakan di http://poi.apache.org/spreadsheet/quick-guide.html#CreateDateCells kode:sumber