128 votes

POI - Comment définir la valeur de cellule sur Date et appliquer le format de date Excel par défaut?

J'ai été en utilisant Apache POI pour le temps de lire existantes des fichiers Excel 2003 par programmation. Maintenant, j'ai une nouvelle exigence pour créer ensemble .les fichiers xls en mémoire (toujours à l'aide d'Apache POI) et puis les écrire dans un fichier à la fin. Le seul problème, debout dans mon chemin est le traitement des cellules avec des dates.

Considérons le code suivant:

Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);

Quand j'écris un classeur contenant cette cellule dans un fichier et l'ouvrir avec Excel, la cellule est affiché comme un nombre. Oui, je me rends compte que Excel stocke ses dates de' mesure que le nombre de jours depuis le 1er janvier 1900 et qui est ce que le nombre dans la cellule.

QUESTION: Quels appels de l'API puis-je utiliser en PVE pour lui dire que je veux un format de date par défaut appliqué à ma cellule de la date?

Idéalement, je veux la cellule de feuille de calcul s'affiche avec le même format de date par défaut Excel aurait attribué, si un utilisateur a ouvert manuellement la feuille de calcul dans Excel et tapé dans la valeur d'une cellule Excel reconnu comme étant une date.

214voto

ninja Points 796

http://poi.apache.org/spreadsheet/quick-guide.html#CreateDateCells

 CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);
 

14voto

Mr. Port St Joe Points 31

Cet exemple concerne l'utilisation de types de fichiers .xlsx. Cet exemple provient d'une page .jsp utilisée pour créer une feuille de calcul .xslx.

 import org.apache.poi.xssf.usermodel.*; //import needed

XSSFWorkbook  wb = new XSSFWorkbook ();  // Create workbook
XSSFSheet sheet = wb.createSheet();      // Create spreadsheet in workbook
XSSFRow row = sheet.createRow(rowIndex); // Create the row in the spreadsheet


//1. Create the date cell style
XSSFCreationHelper createHelper = wb.getCreationHelper();
XSSFCellStyle cellStyle         = wb.createCellStyle();
cellStyle.setDataFormat(
createHelper.createDataFormat().getFormat("MMMM dd, yyyy")); 

//2. Apply the Date cell style to a cell

//This example sets the first cell in the row using the date cell style
cell = row.createCell(0);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X