繁体   English   中英

从PDF表格到MS Excel电子表格,一个长度可变的数字如何保持前导零?

[英]How does one maintain leading zeros in numbers of variable length from PDF forms to MS Excel spreadsheet?

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

将PDF表单编译为电子表格后,如何格式化结果CSV文件中的帐号字段,以显示前导零,其中提交者提供了前导零,而又不将前导零添加到未使用前导零的帐号中?

(我意识到这个问题的答案是,“前导零并不重要。”请以为前提是幽默。)

任何帮助表示赞赏。

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

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

使用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

谢谢大家的投入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM