Rumah >Java >javaTutorial >Bagaimana untuk menyelesaikan masalah POI mengimport nombor tulen dan format lain melalui java?

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

PHPz
PHPzke hadapan
2023-05-09 20:13:061491semak imbas

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());

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);
    //……
}

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);
        //……
    }

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam