2017-02-21 60 views
2

我有一個要求requirement其中NPOI單元格格式爲「MM/dd/yy」,並且當用戶單擊該特定單元格時,它應該顯示完整的價值,如圖所示。雙擊excel後,只有格式通過Excel中的excel應用於C#

當我嘗試手動,它工作絕對好,但是當我通過代碼申請。這是行不通的。

我附上以下示例代碼以供參考。所以你可以引導我尋找可能的解決方案。我會非常感謝你的幫助和支持。 在此先感謝。

string value = "02/17/2017 10:10:10"; 
DateTime datetime; 
SimpleDateFormat dateFormat = new SimpleDateFormat ("MM/dd/yy"); 
DateTime dt = Convert.ToDateTime(value); 
var dateString = dateFormat.Format(dt, CultureInfo.InvariantCulture); 
if (DateTime.TryParseExact(dateString.ToString(), "MM/dd/yy",  CultureInfo.InvariantCulture, DateTimeStyles.None, out datetime)) 
{ 
     cell.SetCellValue(datetime.Date); 
} 
else 
{ 
     cell.SetCellValue(value); 
} 

//For styling 
var dateTypecontentStyle = workbook.CreateCellStyle(); 
dateTypecontentStyle.DataFormat = dataFormatCustom.GetFormat("MM/dd/yy"); 
cell.CellStyle = dateTypecontentStyle; 
+0

我不知道我理解正確的這一點,你想申請的日期和時間到特定的細胞,且它不工作? –

+0

是的,要求是當我點擊excel單元格時,它也應該顯示日期和時間。我得到的原始價值與時間完全一致。我需要格式化日期並顯示爲默認情況下它應該只顯示「MM/dd/yy」格式,但是當用戶點擊它時應該顯示「MM/yy/dd hh:mm:ss」的值,如圖所示以上。 –

回答

1

將單元格的日期格式設置爲MM/dd/yy,然後在單元格中設置完整日期。該單元格應顯示日期爲MM/dd/yy,但顯示單元格被選中時的完整日期。

試試這個代碼:

DateTime dateTest = DateTime.ParseExact("02/17/2017 10:10:10", "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

using (FileStream fs = new FileStream(@"C:\temp\test.xlsx", FileMode.Create, FileAccess.Write)) 
{ 
    IWorkbook workbook = new XSSFWorkbook(); 
    ISheet sheet = workbook.CreateSheet("sheet"); 

    IRow row = sheet.CreateRow(0); 

    ICell cell = row.CreateCell(0); 
    ICellStyle cellStyle = workbook.CreateCellStyle(); 
    cellStyle.DataFormat = workbook.CreateDataFormat().GetFormat("MM/dd/yy"); 
    cell.CellStyle = cellStyle; 
    cell.SetCellValue(dateTest); 

    workbook.Write(fs); 
} 
+0

感謝@krlzlx ..我也試過類似的東西,它對我很有幫助。 –

+0

不客氣。總是樂於提供幫助。如果它解決了您的問題,您可以驗證此答案。 – krlzlx

0

好了,所以從我個人理解你所需要的,這應該做的伎倆:

比方說,你要添加的日期和時間單元格A1,這是我如何去了解它和它的工作:

xl.range cellA1 = yourWorksheet.Cells[1,1]; 
cellA1.Formula = "=NOW()"; 
CellA1.Value = CellA1.Value; 
CellA1.NumberFormat = "m/d/yyyy"; 

之後,你應該留下你的細胞只顯示日期,並在細胞內,你應該有時間。 希望這有助於。

+0

感謝您回答我的查詢,但我有一個查詢,你說的基於NPOI的excel格式。因爲我使用NPOI庫進行Excel創建和格式化。除了上面的例子,我試圖給簡單的價值,然後把樣式下面,但它沒有奏效。如果你能更新我的NPOI,我將不勝感激。 dateTypecontentStyle.DataFormat = dataFormatCustom.GetFormat(「MM/dd/yy」); cell.CellStyle = dateTypecontentStyle; –

+0

我從來沒有使用NPOI但我lookd了一些語法快,我最好的選擇將做這樣的事情: 1)聲明的細胞,你需要 2)Puting配方中它 3)設置單元格的值等於單元值 4)然後進入合成文本 getFormat(「m/d/yyyy」); 我在這裏找到了信息:http://poi.apache.org/spreadsheet/quick-guide.html 我認爲您需要的答案位於「條件格式」和「如何創建單元格/如何創建日期單元格」 我不認爲我可以比這更可悲地使用,但如果我能想到我會發布的東西。 –