2012-06-29 11 views
8

मैं Apache POI 3.8 उपयोग कर रहा हूँ excel फ़ाइल बनाने के लिए। इस एक्सेल फ़ाइल में कुछ तिथियां होने की आवश्यकता है।कैसे Apache POI के साथ एक्सेल में टाइप तारीख के रूप में तिथि निर्धारित करने के?

मैं एक्सेल के रूप में प्रारूप के साथ फाइल एक्सेल प्रकार "तिथि" एक तारीख लिखने की कोशिश कर रहा हूँ। लेकिन मुझे हमेशा एक प्रकार "कस्टम" मिलता है। मुझे "दिनांक" प्रकार का उपयोग करने की आवश्यकता है, इसलिए इसे उपयोगकर्ताओं की सेटिंग्स के आधार पर स्थानीयकृत किया जाएगा।

मैं निम्नलिखित की कोशिश की है:

Apache poi date format

Apache POI localized Date into Excel cell

लेकिन यह काम doens't।

XSSFWorkbook wb = new XSSFWorkbook(); 
XSSFSheet sheet = wb.createSheet("new sheet"); 

XSSFDataFormat df = wb.createDataFormat(); 
CellStyle cs = wb.createCellStyle(); 
cs.setDataFormat(df.getFormat("d-mmm-yy")); 

XSSFCell cell = sheet.createRow(0).createCell(0); 

Calendar c = Calendar.getInstance(); 
c.set(2012,3-1,18); 
cell.setCellValue(c.getTime()); 

cell.setCellStyle(cs); 

// Write the output to a file 
FileOutputStream fileOut = new FileOutputStream("c:\\temp\\dates-sworkbook.xlsx"); 
wb.write(fileOut); 
fileOut.close(); 

कौन सा प्रारूप का उपयोग करना चाहिए:

इस कोड है कि मैं है?

धन्यवाद

उत्तर

9

दिनांक विशेष में से एक, प्रारूपों में बनाया गया है। यदि आप इसे स्पष्ट रूप से उपयोग करना चाहते हैं, तो आपको इसे स्पष्ट रूप से चुनना होगा। (एक्सेल में उपयोग किए जाने वाले लगभग सभी प्रारूप कस्टम हैं, जो कि आप निर्दिष्ट करते हैं, लेकिन कुछ विशेष हैं)

पीओआई में विशेष, निर्मित प्रारूपों की पूरी सूची है (जो स्वरूपों की सूची से बहुत छोटी है BuiltinFormats में एक्सेल!) की हाल ही में प्रतियों में ड्रॉपडाउन में। यदि आप सुनिश्चित करते हैं कि आप उनमें से एक सेट करें, न कि अपनी खुद की कस्टम प्रारूप स्ट्रिंग, तो आपको

+3

मैंने सोचा था कि "डी-mmm-yy" एक प्रारूप में बनाया गया था। लेकिन किसी कारण से यह प्रारूप काम नहीं करता है। जब मैं "एम/डी/वाई" का उपयोग करता हूं तो यह अपेक्षा के अनुसार काम करता है। – cremersstijn

+1

नहीं, डी-mmm-yy एक यूरोपीय शैली प्रारूप है। इस तरह निर्मित चीजें (अमेरिकी शैली) जैसी चीजें दिखती हैं जब आप यूरोप में इसे प्रदर्शित करते हैं! – Gagravarr

+0

दरअसल, यह सच नहीं है। मैंने प्रारूप 22 (0x16, "एम/डी/वाई एच: मिमी" निर्दिष्ट किया है)। लेकिन इसे "कस्टम" के रूप में दिखाया गया है। – Alexey

4

वास्तव में यह पता नहीं होना चाहिए कि आपने इसे पहले से हल किया है या नहीं, लेकिन यहां एक कोड है जो इसे हल करेगा। यह वास्तव में मेरी समस्या हल हो गया।

CreationHelper createHelper = wb.getCreationHelper(); 
... 
cs.setDataFormat(createHelper.createDataFormat().getFormat("yourformat")); 

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

0

से लिया मैं आपकी समस्या को समझते हैं। मैंने अपाचे पोई की तिथि का उपयोग करके हल किया।

Cell cell = yourRow.createCell(yourIndex); 
cell.setCellValue(DateUtil.getExcelDate(yourDate); 

आनंद लें !!

0

यह नीचे का उपयोग कर हल हो गई है:

DataFormatter fmt = new DataFormatter(); 
Object Excel1data=Excel.readExcel(Excel1, "Sheet3", rownumber, columnnumber1); 
      String valueAsInExcel1 = fmt.formatCellValue((Cell) Excel1data); 

      Object Excel2Data=Excel.readExcel(Excel2, "Sheet2", getrownumber, columnnmumber2); 
      String valueAsInExcel2 = fmt.formatCellValue((Cell) Excel2Data); 

      org.testng.Assert.assertEquals(valueAsInExcel1, valueAsInExcel2,"Incorrect data in RowNumber:"+getrownumber+" ColumnNumber:"+columnnmumber2); 
      columnnumber1++; 
संबंधित मुद्दे