2011-03-28 1 views
9

Nous avons la situation suivante: notre système a l'exportation de données au format xls, ce fichier est énorme avec beaucoup de lignes et de colonnes. Et après le téléchargement de l'utilisateur et l'ouverture du document, il voit le document défiler jusqu'à la dernière colonne et la dernière feuille Spreadsheet. C'est très ennuyeux, mieux vaut mettre l'accent sur le premier onglet et la première cellule. J'ai fait le code de test simple pour voir comment cela fonctionne:Apache POI définir la cellule sélectionnée après l'ouverture du document xls

public class SelectionTest { 
public static String file = "/usr/test/poi.test/src/main/resources/test"; 
@Test 
public void test() throws FileNotFoundException, IOException { 
    HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file)); 
    HSSFSheet s = wb.getSheetAt(0); 
    s.setActive(true); 
    HSSFRow row = s.getRow(0); 
    HSSFCell cell = row.getCell(0); 
    cell.setAsActiveCell(); 
    FileOutputStream out = new FileOutputStream(file); 
    wb.write(out); 
    out.close(); 
} 
} 

Et cela ne fonctionne pas.

+0

ce qui est le journal? Je veux dire, avez-vous eu des erreurs? – GuruKulki

+0

non, aucune erreur, api ne fonctionne tout simplement pas – abovesun

Répondre

6

Voici la solution de travail, ont trouvé cette here

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file)); 
    HSSFSheet s = wb.getSheetAt(0); 
    wb.setActiveSheet(0); 
    s.showInPane(0, 0); 
    FileOutputStream out = new FileOutputStream(file); 
    wb.write(out); 
    out.close(); 
+0

Cela ressemble beaucoup à [this] (http://stackoverflow.com/q/5964598/701884) question et réponse (s). – Wivani

+0

Cette solution ne semble pas fonctionner pour moi. J'utilise un XSSFWorkbook. C'est la seule différence. – yaswanth

+0

Fonctionne uniquement avec HSSFWorkbook. Pour XSSFWorkbook, vous devez utiliser [cette solution] (https://stackoverflow.com/questions/44903464/is-there-any-way-to-move-horizontal-scroll-bar-the-sheet-one-column-to- la gauche) – Luke

1

Cela a fonctionné pour moi:

sheet.setActiveCell(new CellAddress(0, 0));