【问题标题】:Exporting tab delimited file to Excel with EPPlus使用 EPPlus 将制表符分隔文件导出到 Excel
【发布时间】:2017-03-27 19:01:05
【问题描述】:

我正在尝试将包含两列的制表符分隔文件导出到 Excel。我找不到显示如何使用 EPPlus 执行此操作的示例。我见过的大多数示例都与 LoadFromDatabase 相关。我的猜测是读取文件并将数据存储为数组或数组列表,然后执行 LoadFromArrays。

文件中的数据如下所示:

RFID 评论 ABC245 设备添加到系统 BBT988 未找到设备 GBN471 设备出售

以下是我尝试编写代码以执行导出到 Excel 的操作。目前,我遇到了一个铸造错误并试图解决它。我正在寻找的是获得有关编写代码以执行操作的正确有效方式的反馈。提前谢谢!

Dim fLoc As String
fLoc = Server.MapPath(".")
Dim tFile As StreamReader
tFile = File.OpenText(fileLoc)
Dim writeLn As String
writeLn = tFile.ReadToEnd
Response.Write(writeLn)

fLoc = Server.MapPath(".") & "/maindirectory" & param1 & param2
tFile = File.OpenText(fileLoc)
writeLn = ""
writeLn = tFile.ReadToEnd 
writeLn = RTrim(writeLn)

Dim aList As New ArrayList
aList.Add(writeLn)

Dim attachment as String
attachment = "attachment; filename=" + "sheet.xlsx"
Dim xlPack As ExcelPackage = New ExcelPackage()
Dim ws As ExcelWorksheet = xlPack.Workbook.Worksheets.Add(sheet)
Dim ms As MemoryStream = New MemoryStream()

ws.Cells(1, 1).LoadFromArrays(aList)
xlPack.SaveAs(ms)
ms.WriteTo(Response.OutputStream)

【问题讨论】:

    标签: arrays excel vb.net epplus


    【解决方案1】:

    使用ExcelTextFormat 解析文件,如果需要,它还允许为列/单元格格式设置一些原始数据类型。例如这个制表符分隔的数据:

    Header 1    Header 2
    0   03/22/2017 18:03
    1   03/23/2017 18:03
    2   03/24/2017 18:03
    3   03/25/2017 18:03
    4   03/26/2017 18:03
    

    生成 Excel 文件:

    Dim excelTextFormat = New ExcelTextFormat()
    excelTextFormat.Delimiter = vbTab
    excelTextFormat.DataTypes = New eDataTypes() _
    {
        eDataTypes.Number, eDataTypes.DateTime
    }
    
    Using package = New ExcelPackage(New FileInfo(output))
        package.Workbook.Worksheets.Add("sheet1")
        Dim ws = package.Workbook.Worksheets(1)
        ws.Column(2).Style.Numberformat.Format = "mm/dd/yyyy"
        ws.Cells("A1").LoadFromText(input, excelTextFormat)
        package.Save()
    End Using
    

    输出:

    【讨论】:

    • 你好 kuujinbo,这就像一个魅力。感谢您对我的问题的所有帮助以及分享 EPPlus 的强大和灵活。
    • @ChungLee - 不客气。既然您有足够的声誉,您可能应该为您标记为已回答的问题投票。
    • 我刚刚赞成您对这个问题的回答。我会继续为其他人做同样的事情。再次感谢!
    • @ChungLee - 谢谢。我很抱歉 - 应该为您提供一个关于接受答案的链接:https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#answer-5235
    • 这非常有用。现在我对系统的工作原理有了更好的了解。谢谢!
    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2013-02-26
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多