Limitation lors de la génération de la liste déroulante Excel avec Apache POI
Je suis en train de générer un fichier excel avec certaines validations, j'ai lu le pi dev guides pour la mettre en œuvre. Au cours de la mise en œuvre, j'ai eu une exception (String literals in formulas can't be bigger than 255 characters ASCII
). PI concatène tous déroulant options dans '0' deliminated chaîne et la vérification de sa longueur et de me donner exception. 🙁
Je suis en utilisant la dernière version de POI 3.8 beta 5.
Et mon code est:
try {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 0);
//CellRangeAddressList from org.apache.poi.ss.util package
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(getCountries());
DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);
sheet.addValidationData(dataValidation);
FileOutputStream fileOut = new FileOutputStream("c:\\test.xls");
wb.write(fileOut);
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
Après que j'ai essayé avec XSSFWorkBook avec ce code:
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
DataValidationHelper validationHelper = new XSSFDataValidationHelper(sheet);
DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(getCountries());
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DataValidation dataValidation = validationHelper.createValidation(constraint, addressList);
dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dataValidation.setSuppressDropDownArrow(true);
sheet.addValidationData(dataValidation);
FileOutputStream fileOut = new FileOutputStream("c:\\test.xlsx");
Malheureusement, aucun succès avec un tel résultat, qui est la virgule delimenated long de la chaîne de caractères dans une cellule:
Mais manuellement dans excel, je peux créer déroulant cellules avec cette longue liste de pays.
Est-il possible de générer liste déroulante avec les chaînes longues, ou de l'API ne prend pas en charge?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Je l'ai compris, Excel lui-même ne permet pas d'entrer plage de validation de la chaîne de plus de 255 caractères, ce n'était pas de POI limitation. Et maintenant, je suis en utilisant Les Plages nommées Cellules et l'a Nommé et qu'il fonctionne correctement pour moi. Si je devais mettre ma plage de validation des jetons dans une autre feuille(fait caché) et que j'ai référencé souhaité plages de cellules à partir de ma vraie feuille. Voici mon code de travail:
Code ci-dessus fonctionne très bien. Mais si j'utilise XSSF classes au lieu de HSSF, il échoue en disant: Exception in thread
Pour créer la liste déroulante à l'aide de XSSF interfaces j'ai eu la solution à
créer la liste déroulante à l'aide d'apache poi XSSF interfaces
La formidable solution fournie par Õzbek besoins seulement une légère modification pour fonctionner parfaitement avec NPOI (à l'aide de C# sur .NET).
Voici mon code, fourni à titre de commodité pour C# codeurs. Il prend une feuille et la position des éléments en entrée et peut également traiter plusieurs déroulante, lorsqu'ils sont disposés en colonnes.