【问题标题】:Convert Hex file to excel file将Hex文件转换为excel文件
【发布时间】:2018-03-11 15:37:20
【问题描述】:

我正在使用 Hanna 传感器仪器记录一些数据,这些数据以具有十六进制代码的 .log 文件形式出现。 然后我使用 Hanna 软件(仪器随附)将这些数据转换为 excel 格式(数字 & 字符 & 特殊字符)。 我想知道它是怎么做的,如果可能的话,不用软件自己做?

文件长这样,扩展名是.log

4d65 7465 720a 3230 3137 3039 3139 0000
c1fb 5321 ffff 01fc 1fc8 ffff f4ff f92d
0dc3 58ff 4a00 0000 0000 735a 0081 6101
a242 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 003d 3950 82cc
0940 08b4 3088 c2fb 5321 ffff 01fc 1fc8
ffff f4ff 0b2e 0dae 58ff 4a00 0000 0000
a85a 00a8 6101 1143 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
.
.
.
continued

【问题讨论】:

  • 您的编程问题是什么?从外观上看,您是在问一个硬件问题。传感器如何测量 X,如何保存此信息,以及如何将其从 .log 转换为 .xlsx。
  • 信息保存为.log文件,然后使用该软件转换为excel表格。我不知道它如何将 .log 转换为 .xlsx。我正在尝试找出并将其转换为自己擅长的。

标签: excel binary hex ascii


【解决方案1】:

尝试类似:

Sub JustOneFile()
    Dim s As String, i As Long

    i = 1
    Close #1
    Open "C:\TestFolder\james.log" For Input As #1

    Do Until EOF(1)
        Line Input #1, s
        Cells(i, 1) = s
        i = i + 1
    Loop

    Close #1

    Columns("A:A").TextToColumns Destination:=Range("B1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 2), Array(4, 2), Array(9, 2), Array(14, 2), Array(19, 2), _
        Array(24, 2), Array(29, 2), Array(34, 2)), TrailingMinusNumbers:=True
End Sub

【讨论】:

    【解决方案2】:

    该过程涉及导入 .LOG 文件,然后循环遍历所有单元格并单独转换它们,或者将所有数据块存储到变量数组中,转换它们并将转换后的值返回到工作表。推荐使用后一种转换方法。

    Option Explicit
    
    Sub wqewqw()
        Dim hxwb As Workbook
        Dim i As Long, j As Long, vals As Variant
    
        Workbooks.OpenText Filename:="%USERPROFILE%\Documents\hex_2_excel.log", _
            Origin:=437, StartRow:=1, DataType:=xlFixedWidth, TrailingMinusNumbers:=True, _
            FieldInfo:=Array(Array(0, 2), Array(4, 2), Array(9, 2), Array(14, 2), _
                             Array(19, 2), Array(24, 2), Array(29, 2), Array(34, 2))
        With ActiveWorkbook
            With .Worksheets(1)
                vals = .Cells(1, "A").CurrentRegion.Cells
                For i = LBound(vals, 1) To UBound(vals, 1)
                    For j = LBound(vals, 2) To UBound(vals, 2)
                        vals(i, j) = Application.Hex2Dec(vals(i, j))
                    Next j
                Next i
                With .Cells(1, "A").Resize(UBound(vals, 1), UBound(vals, 2))
                    .NumberFormat = "General"
                    .Value = vals
                End With
            End With
        End With
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 2011-10-08
      • 1970-01-01
      • 2019-06-04
      • 2011-04-27
      • 1970-01-01
      • 2016-04-07
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多