如何在从 PDF 表单到 MS Excel 电子表格的可变长度数字中保持前导零?
How does one maintain leading zeros in numbers of variable length from PDF forms to MS Excel spreadsheet?
我有数百个提供电子资金转帐 (EFT) 信息的 PDF 表格。我的会计人员向我保证,银行帐号中的前导零很重要,需要维护。然而,由于表格提交者使用不同的银行帐号方案,因此提供的帐号长度可变。
在我将 PDF 表格编译成电子表格后,我如何格式化生成的 CSV 文件中的帐号字段以显示前导零,其中前导零由提交者提供,而不向帐号添加前导零没有使用前导零?
(我知道这个问题的答案是,"The leading zeros are not important."请假设他们是来逗我。)
感谢任何帮助。
可以通过编程方式assemble制表符分隔(或 CSV 格式,或任何结构化文本格式的格式)文本,使其成为数据对象,然后导出。在我的工作中,这种情况发生得比较频繁,最常见的是制表符分隔,但也使用该方法创建了 FDF 或 CSV。如评论中所述,添加 space (或任何非数字字符)应保留前导零,直到您可以在 Excel.
中设置列的格式
导出文件后,您可以将其导入 Excel。
使用 Acrobat 从 "Export Data From Multiple Forms" 对话框创建的 CSV 文件,我只是使用 VBA 引用 "Acrobat" 到 "re-enter" 只有帐号字段的确切文本.事实证明这比听起来要简单,因为 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
谢谢大家的意见。
我有数百个提供电子资金转帐 (EFT) 信息的 PDF 表格。我的会计人员向我保证,银行帐号中的前导零很重要,需要维护。然而,由于表格提交者使用不同的银行帐号方案,因此提供的帐号长度可变。
在我将 PDF 表格编译成电子表格后,我如何格式化生成的 CSV 文件中的帐号字段以显示前导零,其中前导零由提交者提供,而不向帐号添加前导零没有使用前导零?
(我知道这个问题的答案是,"The leading zeros are not important."请假设他们是来逗我。)
感谢任何帮助。
可以通过编程方式assemble制表符分隔(或 CSV 格式,或任何结构化文本格式的格式)文本,使其成为数据对象,然后导出。在我的工作中,这种情况发生得比较频繁,最常见的是制表符分隔,但也使用该方法创建了 FDF 或 CSV。如评论中所述,添加 space (或任何非数字字符)应保留前导零,直到您可以在 Excel.
中设置列的格式导出文件后,您可以将其导入 Excel。
使用 Acrobat 从 "Export Data From Multiple Forms" 对话框创建的 CSV 文件,我只是使用 VBA 引用 "Acrobat" 到 "re-enter" 只有帐号字段的确切文本.事实证明这比听起来要简单,因为 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
谢谢大家的意见。