2014-09-21 56 views
1

我將電話號碼存儲爲一串數字,例如:6028035615,但在查詢時將它們作爲整數進行CAST處理。我想以正確的電話號碼格式格式化單元格中的數據,如(Excel)所示的(602)803-5615。但是,我如何說明我想要使用的格式類型? 如果我使用:在EPPlus中格式化一個使用電話號碼格式的列

objData.Columns.Add("HPhone", GetType(Integer)) 
    wshUS.Column(i).Width = 15 ' PhoneH 
    wshUS.Column(i).Style.Numberformat.Format = "###-###-####" 

wshUS.Column(i).Style.Numberformat.Format = "(###) ###-####" 

空白單元被示出爲任一 - 在前者的情況下或() - 在後者。 有沒有一種格式類型,我可以把=後得到的電話號碼爲Excel? 我將如何使用條件格式來解決這個問題? 我在VB.NET中爲網頁編寫代碼。

回答

0

什麼是objData?一般來說,您不需要在表單中添加列 - 當您首次引用單元格時,EPPlus會自動執行此操作。我VB是有點生疏,但能正常工作對我來說:

<TestMethod> _ 
Public Sub PhoneNumberFormatTest() 
    Dim file = New FileInfo("c:\temp\temp.xlsx") 
    If file.Exists Then 
     file.Delete() 
    End If 

    Dim pck = New ExcelPackage(file) 
    Dim workbook = pck.Workbook 
    Dim worksheet = workbook.Worksheets.Add("newsheet") 

    Const number As String = "6028035615" 
    Const format As String = "(###) ###-####" 

    Dim startcell = worksheet.Cells(1, 1) 

    startcell.Value = Int64.Parse(number) 
    startcell.Offset(1, 0).Value = Int64.Parse(number) + 1 

    worksheet.Column(1).Width = 15 
    worksheet.Column(1).Style.Numberformat.Format = format 

    pck.Save() 

End Sub 

我下載EPPlus 3(穩定)的源代碼解決方案,並跑這作爲一個單元測試...


編輯:添加字符串操作:

<TestMethod> _ 
Public Sub PhoneNumberFormatTest() 
    Dim file = New FileInfo("c:\temp\temp.xlsx") 
    If file.Exists Then 
     file.Delete() 
    End If 

    Dim pck = New ExcelPackage(file) 
    Dim workbook = pck.Workbook 
    Dim worksheet = workbook.Worksheets.Add("newsheet") 

    Const number As String = "6028035615" 
    Const format As String = "(###) ###-####" 

    Dim startcell = worksheet.Cells(1, 1) 

    'Directly to numbers with parse 
    startcell.Value = Int64.Parse(number) 
    startcell.Offset(1, 0).Value = Int64.Parse(number) + 1 

    'OR as a string back to a number. 
    Dim stringcell = startcell.Offset(2, 0) 
    stringcell.Value = number 
    stringcell.Value = Int64.Parse(DirectCast(stringcell.Value, String)) 
    stringcell.Style.Numberformat.Format = "(###) ###-####" 

    'As string - does not work as number 
    stringcell.Offset(0, 1).Value = number 
    stringcell.Offset(0, 1).Style.Numberformat.Format = "(###) ###-####" 

    worksheet.Column(1).Width = 15 
    worksheet.Column(1).Style.Numberformat.Format = format 

    pck.Save() 

End Sub 
+0

您可以忽略objData部分;我意識到,現在通過代碼,我不需要這些。 – WebEngineer 2014-10-11 17:57:52

+0

您可以忽略objData部分;我意識到,現在通過代碼,我不需要這些。但是,與我相關的是,我使用數據表'wshUS.Cells(「A1」)LoadFromDataTable(objTable,True)'將數據加載到工作表中,因此您的分析建議似乎不適用於此。電話號碼的數據讀取爲整數,因此它已經是一個數字。在你的例子中,如果數字字符串是空的,單元格中會產生什麼? – WebEngineer 2014-10-11 18:05:52

+0

我明白你的意思了。看我的編輯。我不認爲有一個字符串可以工作,因爲excel會將它看作是這樣的(即在單元的角落出現的小錯誤三角形)。我認爲你唯一的選擇就是在它轉出後使用循環將其轉換爲數字。或者在數據表中改變它,如果可能的話。 – Ernie 2014-10-13 12:32:04