Rumah  >  Soal Jawab  >  teks badan

java如何复制几百万行的Excel数据?自动拆成多个表?

数据表如图1,2,3行所示,把第2行复制3次(d次),第3行复制4次(d次)
然后只粘贴abc列的数据(6,7,8有d行相同的数据,但是不包括d列的数据)
根据上面的数据,把复制之后的数据写入新的表,用java如何操作呀?
有40多个表,每个表中都有200多条数据,数据量很大,所有要用程序写,
还有一个问题就是一个表中复制之后的数据量可能超过Excel20007的最大行数(1048576行),如何自动拆成多个表呢?比如前50个数据在一个表,51-100在第二个表,101-200在第三个表......

注意!!!
复制之后的数据是写到Excel表中,并不是数据库中,java初学。。不太会

PHP中文网PHP中文网2741 hari yang lalu350

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 09:29:23

    Baiklah, izinkan saya meluruskan masalah terlebih dahulu untuk memudahkan pembacaan...
    Jadual excel mempunyai jumlah empat lajur a, b, c dan d data yang disimpan, dan lajur d ialah perwakilan Bilangan kali baris data ini perlu disalin.

    Selain itu, adakah jadual yang anda maksudkan tentang jadual pangkalan data atau jadual excel?


    Kemas kini

    Anda boleh lihat Apache POI perpustakaan alat ini, yang digunakan khas untuk mengendalikan dokumen pejabat.

    Jika ia hanya untuk kegunaan sekali sahaja, maka tidak perlu terlalu memikirkan Gunakan POI untuk membaca dokumen excel ke dalam memori, kemudian salin data dalam program, dan kemudian partisi data yang disalin. dan tuliskannya ke dalam jadual excel.

    Jika anda tahu serba sedikit tentang js, saya cadangkan anda menggunakan node-xlsx (bergantung pada nodejs) untuk mencapai keperluan ini, yang lebih pantas daripada menulis java. Bilangan baris kod hendaklah dalam 50 baris.

    Kemas kini 2

    Saya hanya boleh menulis sekeping kod nodejs untuk anda, kerana saya benar-benar tidak mahu menulis java...

    'use strict'
    
    const fs = require('fs');
    const xlsx = require('node-xlsx');
    const sheet1 = xlsx.parse(process.argv[2])[0].data;
    const savedFile = process.argv[3];
    
    let result = [];
    for(let i = 1, length = sheet1.length;i < length;i++) {
      let row = sheet1[i];
      let loopTimes = row.splice(3);// 将d列数据取出并移除
      for(let j = 0;j < loopTimes;j++) {
        result.push(row);
      }
    }
    
    let file = xlsx.build([{name:'sheet1', data:result}]);
    
    fs.writeFileSync(savedFile, file, 'binary');

    Cara menggunakan

    1. Pasang nodej;

    2. Buka tetingkap cmd dan jalankan npm --registry https://registry.npm.taobao.org install -g nrm;

    3. Larinrm use taobao;

    4. Simpan kod di atas sebagai process.js dan letakkan fail dalam direktori yang sama dengan fail sumber excel anda;

    5. Masukkan direktori dalam tetingkap cmd dan jalankan
    6. ;

      npm i node-xlsx

    7. Jalankan
    8. (parameter kedua ialah nama fail sumber excel anda, dan parameter ketiga ialah nama fail excel yang anda ingin simpan);

      balas
      0
  • 巴扎黑

    巴扎黑2017-04-18 09:29:23

    Alat: Java POI mengendalikan Excel, mengimbas setiap baris dan lajur, mengikut peraturan perniagaan anda, kerana satu helaian tidak boleh diletakkan, meletakkan berbilang storan dan setiap baris data disalin dan diletakkan dalam helaian baharu dalam Excel , jadi ia tidak akan melimpah

    balas
    0
  • Batalbalas