Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menyelesaikan masalah POI mengimport nombor tulen dan format lain melalui java?

PHPz
Lepaskan: 2023-05-09 20:13:06
ke hadapan
1460 orang telah melayarinya

Masalah seperti mengimport nombor tulen daripada poi

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());
Salin selepas log masuk

poi mendapat Kandungan Sel: pemformatan nombor

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.

adalah seperti berikut:

if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    DecimalFormat format = new DecimalFormat("#");
    double num = xssfRow.getNumericCellValue();
    String res = format.format(num);
    //……
}
Salin selepas log masuk

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

    # nombor, tidak termasuk 0
  • . Pemegang tempat pemisah perpuluhan
  • , pemegang tempat pemisah kumpulan
  • - Awalan negatif lalai.
  • % didarab dengan 100 dan dipaparkan sebagai peratusan
  • Contoh:
  • 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);
        //……
    }
    Salin selepas log masuk

    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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan