格式化列以在EPPlus中使用电话号码格式

时间:2014-09-21 19:06:20

标签: asp.net excel vba vb.net epplus

我将电话号码存储为一串数字,例如:6028035615,但在查询时将它们作为整数进行CAST。我想以正确的电话号码格式格式化单元格中的数据,例如Excel(602)803-5615。但是,如何声明我想要使用的格式类型? 如果我使用:

  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编写代码隐藏的网页。

1 个答案:

答案 0 :(得分: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