如何在PDF格式到MS Excel电子表格中保持可变长度的前导零?

时间:2015-12-02 19:12:32

标签: excel pdf pdf-form

我有数百份PDF表格,提供电子资金转帐(EFT)信息。我的会计人员向我保证,银行账号中的前导零是重要的,需要维护。但是,由于表格的提交者使用不同的银行使用不同的帐号编号方案,所提供的帐号长度可变。

将PDF表单编译成电子表格后,如何格式化生成的CSV文件中的帐号字段,以显示提交者提供前导零的前导零,而不向没有前导的帐号添加前导零使用了零?

(我意识到这个问题的答案是,"领先的零并不重要。"请假设它们是幽默我。)

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

可以以编程方式组装制表符分隔(或CSV格式化,或以任何结构化文本格式格式化)文本,使其成为数据对象,然后将其导出。在我的工作中,这种情况相对频繁发生,最常见的是制表符分隔,但也使用该方法创建了FDF或CSV。如注释中所述,添加空格(或任何非数字字符)应保留前导零,直到您可以在Excel中设置列的格式。

获得导出的文件后,可以将其导入Excel。

答案 1 :(得分:0)

使用Acrobat从“从多个表单导出数据”对话框创建的CSV文件,我只是使用VBA引用“Acrobat”来“重新输入”仅帐号字段的确切文本。这被证明比听起来更简单,因为CSV文件是使用第一列中的表单文件名生成的。它还避免重写整个过程,而只编码所需的部分。最难的部分是找到如何以文本格式保持字段。最后,我用了

jso.getField("Account Number").valueAsString

完整代码如下:

Sub GetAccountNumbers()
  Dim AcroApp As Acrobat.CAcroApp
  Dim DisbForm As Acrobat.CAcroPDDoc
  Dim jso As Object
  Dim FormPath, FormFile As String
  Dim i, LastRow As Integer

  Set AcroApp = CreateObject("AcroExch.App")
  Set DisbForm = CreateObject("AcroExch.PDDoc")

  'This is the path to the folder contaioning the forms
  FormPath = "C:\FolderOfPDFForms\"

  'This is the number of the row containing the last record in the CSV file
  LastRow = 5000

  For i = 2 To LastRow
    FormFile = Worksheets(1).Range("A" & i).Value
    DisbForm.Open (FormPath & FormFile)
    Set jso = DisbForm.GetJSObject
    Worksheets(1).Range("B" & i).Value = jso.getField("Account Number").valueAsString
    DisbForm.Close
  Next i

  Set AcroApp = Nothing
  Set DisbForm = Nothing

End Sub

全部谢谢你的意见。