2016-04-14 29 views
0

Çalıştığım bir hobi projesi için, sonuçları Excel dosyalarından güncelleştirmek, değerlendirmek ve almak için Apache POI kullanmak istiyorum. Çoğu kez, bunu yapmak için sadece birkaç hücre yeterlidir ve hücrelerin geri kalanı sadece çok fazla yer kaplar ve dosyaları açarken performans sorunlarına yol açar. (:; C2 B 10: C10 B2) "ilk" Bir Excel çalışma kitabını Apache ile nasıl güncellersiniz? POI

  • Levha kolon, D, E ve F
  • bazı rasgele sayı ile ı SUMPRODUCT içeren A1 ile, aşağıdaki yapıya "ilk"

    • Levha olduğunu varsayalım B10 ve C2: C10 ve A1 için güncellenmiş değeri elde birden hücreleri

    bazı rasgele veri ile "İkinci"

  • Sac Şimdi, B2 güncellemek için isterler. Diğer veriler umrumda değil. Dosyanın boyutunu optimize etmek için diğer tüm hücreleri null'a güncellemek ve dosyayı kaydetmek istiyorum. Örn, yukarıdaki örnekte: "İlk" sayfasından D, E ve F sütunlarını kaldırın + "İkinci" sayfasını kaldırın. Bunu gerçekleştirmek için

    bir yolu aşağıdaki pseudocode gibi bir şey (herhangi bir dairesel referanslar varsayarak)

    Take set of cells I want to evaluate (e.g., A1) as "relevantCells" 
    For each cell in "relevantCells" 
        Retrive all cells in the formulae and add to "relevantCells" 
    For each cell in workbook 
        Check if cell is in "relevantCells" 
        if(yes) continue 
        else set cell to null 
    Save workbook 
    

    Apache POI otomatik sırayla ilgili olmayan tüm hücreleri kaldırtmak daha iyi bir yolu var mı uygulamak olacaktır bir hücre kümesi için güncellenmiş değerleri almak için?

  • +1

    Örneğinize göre, A1, B2: B10 ve C2: C10 hücreleriyle birlikte yalnızca "First" sayfası oluşturan yeni bir boş çalışma kitabından başlamak en iyisi olacaktır. –

    cevap

    1

    event-based reading of files için API'lere bakın, bu sayede dosyayı akış biçiminde okuyabilirsiniz (örneğin çok büyük dosyalarda bile OOM yok) ve yalnızca "ilginç parçaları" ikinci bir Çalışma Kitabına yazabilirsiniz. ilerledikçe biriktirin.