J'ai besoin de générer un fichier .xls (Excel), à l'aide de la bibliothèque Java Apache POI pour les tableurs de calcul . P>
Le fichier contiendra une liste de numéros de téléphone dans la colonne A, formaté comme "0221 ..." ou "+49221 ..." - Donc Excel par défaut les interprète comme des cellules numériques. C'est mauvais, car le chanteur 0 ou + sera coupé. P>
Pour résoudre le problème, je peux utiliser Comment puis-je appliquer ce paramètre pour la colonne entière (c'est-à-dire même pour toutes les cellules restantes, où l'utilisateur entrera des numéros de téléphone supplémentaires)? P>
dans Excel, c'est possible em>: sélection de la colonne entière et appliquez le type de cellule (le paramètre survit à enregistrer / charger le fichier.) p>
Mais je ne trouve pas la méthode correcte pour POI. P>
cell.setcelltype (cell.cell_type_string) code>, qui fonctionne bien, mais uniquement pour les cellules spécifiques que je définis ceci pour. P>
feuille.setDefaultCelltype (int colnum) code>. Mais je ne trouve rien comme ça (probablement je suis juste aveugle? Il y a beaucoup de
4 Réponses :
sera Cette aide? p>
En créant un format de données avec le symbole @ et en utilisant cela dans une cellule cellulaire objet qui est ensuite transmis à la méthode SetDefaultColumnStyle (), il était Possible de définir le type de données par défaut de la colonne dans ce cas, dans ce cas, texte. Je n'ai pas expérimenté plus loin mais je soupçonne qu'il serait possible de faire quelque chose de similaire avec d'autres objets de style pour définir le type par défaut sur numérique ou même format personnalisé tel que la devise. P> blockQuote>
Ça à l'air bon! Dès que je reviens au projet, je vais essayer cette solution. Merci!
J'ai fait la même chose. var cllstyle = this.workbook.Createcellstyle (); var workbook = nouveau HSSFWorkbook (); var currdataformat = workbook.createdataformat (); cllstyl.dataformat = currdataformat.getformat ("@"); feuille.setDefaultColumnstyle (1, clstyle); Mais cela ne montre pas le format "texte", mais il affiche "date". S'il vous plaît aidez-moi à ce sujet.
Voici quelques exemples de code inspiré par la réponse de VLAD:
DataFormat fmt = workbook.createDataFormat(); CellStyle textStyle = workbook.createCellStyle(); textStyle.setDataFormat(fmt.getFormat("@")); worksheet.setDefaultColumnStyle(0, textStyle);
VLAD:
Cela a eu la majeure partie du problème fait. J'ai trouvé que toutes les lignes vides ont été formatées comme je les voulais. Cependant, des rangées où j'avais des zéros initiales ont regardé et ont travaillé bien; Toutefois, si je devais modifier une valeur préexistante avec une autre valeur commençant par zéro, les zéros ont disparu. Je vous recommande donc d'ajouter du code à la recherche de la valeur dans la cellule pour réinitialiser le SetCellstyle sur le texte. Voici quelques extraits:
Méthode CreeCeller Public CreeCellul (Row R !, Cellule Bbjnumber, Valeur BBJString!) MODYRET C! P> #text_format! = #wb!.createCellStyle()
#text_format!.setDataFormat(#format!.getFormat("@"))
Un meilleur moyen de la définir maintenant à l'aide de POI consiste à utiliser la classe EG: strong> p> Pour convertir le type de colonne à numérique p> la liste complète de intégré> code> classe.
intégré des formats code> peut être vu, ici p> p>