Apabila menggunakan poi untuk mengeksport excel, jika sel ditetapkan kepada nombor tulen, apabila data input terlalu besar, ia akan dipaparkan secara automatik dalam notasi saintifik, mengakibatkan ralat dalam data yang diimport. Penyelesaiannya adalah untuk mendapatkan fail eksport di latar belakang dan menukar paksa atribut sel, yang boleh diselesaikan dengan sempurna. Ia juga sesuai untuk pengecualian import data yang disebabkan oleh format sel lain
Cell cellCode = r.getCell(1); cellCode.setCellType(CellType.STRING); info.setCode(r.getCell(1).getStringCellValue());
Hari ini, saya menerima permintaan daripada pihak perniagaan, mengatakan bahawa jumlah yang diimport oleh excel semuanya dibundarkan.
Kemudian saya melihat kod: Saya terpesona pada mulanya, dan saya benar-benar tidak tahan. Tetapi fikirkanlah, sebagai seorang pengaturcara, anda tidak boleh menolak untuk berkhidmat kepada rakyat. Jadi, saya menyahpenyahnya. Saya benar-benar malas dan tidak mahu mengejar kod secara langsung, jadi saya pergi ke nyahpepijat... Nombor diformatkan sebagai integer. Sudah tentu, tidak akan ada masalah jika anda mendapat nilai secara langsung.
if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) { DecimalFormat format = new DecimalFormat("#"); double num = xssfRow.getNumericCellValue(); String res = format.format(num); //…… }
DecimalFormat
DecimalFormat ialah subkelas konkrit NumberFormat, digunakan untuk memformat nombor perpuluhan. Bantu anda memformat nombor ke dalam apa yang anda perlukan secepat mungkin. DecimalFormat mengandungi corak dan satu set simbol.
Kelas DecimalFormat bergantung terutamanya pada dua simbol pemegang tempat, # dan 0, untuk menentukan panjang nombor. Simbol seperti "####.000". Mod ini bermakna terdapat empat digit sebelum titik perpuluhan Jika tidak mencukupi, biarkan ia kosong Terdapat tiga digit selepas titik perpuluhan.
makna simbol:0 nombor
if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) { DecimalFormat format = new DecimalFormat("#"); double num = xssfRow.getNumericCellValue(); String res = format.format(num); // num 和 res 的取值差不多。 如: 50.00 : num 为 50.00,res 为 50; 123.23, num 为123.23, res为123.23 System.err.println(num + "--" + res); //…… }
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah POI mengimport nombor tulen dan format lain melalui java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!