`

用宏读取Excel数据生成文本文件

阅读更多
最近有个项目用到宏,差不多都忘光了。记得刚上大学的时候,那个年代是VB流行的季节,因此与Excel结合小用过。
恰巧从Excel中读出数据,形成报盘文件。下面列出基本的编程要点:
Global Const INITIAL_COL = 64
Function getCellValue(sheetName As String, rowNum As Integer, colNo As Integer) As String
  getCellValue = Sheets(sheetName).Range(Chr(colNo + INITIAL_COL) & rowNum).Value
  
End Function

Function setCellValue(sheetName As String, rowNum As Integer, colNo As Integer, strValue As String)
  Sheets(sheetName).Range(Chr(colNo + INITIAL_COL) & rowNum).Value = strValue
End Function

On Error GoTo Err_Line

Set fso = CreateObject("Scripting.FileSystemObject")

Set objText = fso.CreateTextFile(sFileName)


'**Define Sheet Name
sResourceSheet = "ResourceFile"

'**Initialization
iRecordCount = 0
nTotalPremAmount = 0

'**Write the header into the text file, header row no is 1
iRowNo = 1

' Trans Code, the length is 5
sHeaderTransCode = Left(UCase(getCellValue(sResourceSheet, iRowNo, 1)) & Space(5), 8)


sHeaderDate = getCellValue(sResourceSheet, iRowNo, 3)

sFiller1 = String(9, "0")

'Check and format the header Date
If Len(sHeaderDate) = 6 Then
    sHeaderDate = Right(sHeaderDate, 4)
ElseIf Len(sHeaderDate) <> 4 Then
    'Report Error, Date is not standard
    sErrorMsg = "The Header Date you specified is not correct, please use correct date format YYYYMM or YYMM!"
    
    GoTo Err_Line
End If

'Combine Header Record
sHeaderRecord = sHeaderTransCode & sFiller1 & sHeaderDate

Call objText.WriteLine(sHeaderRecord)

'**row no, content body get started from row 3
iRowNo = 3
  
While getCellValue(sResourceSheet, iRowNo, 1) <> "" And UCase(getCellValue(sResourceSheet, iRowNo, 2)) <> "END"

  '**Handling Date,format is "yyyymmdd"
  sDate = getCellValue(sResourceSheet, iRowNo, 1)
  '**Transaction Code, length is 5
  sTransCode = Left(getCellValue(sResourceSheet, iRowNo, 2) & Space(5), 5)
  '**Premium Amount
  If IsNumeric(getCellValue(sResourceSheet, iRowNo, 4)) = True Then
    nPremAmount = Val(getCellValue(sResourceSheet, iRowNo, 4))
  Else
    sErrorMsg = "Line " & iRowNo & ": Premium Amount " & getCellValue(sResourceSheet, iRowNo, 4) & " is not numeric, please have a check!"
    GoTo Err_Line
  End If
    
  '**Format Premium Amount to 0000XXX, length is 7, add char 0 in front of the amount
  sPremAmount = Right(String(7, "0") & nPremAmount * 100, 7)
  
  
  '**Generate Detail Record
  sDetailRecord = sDate + sTransCode & sPremAmount
  
  '**Accumulation total number and total premium amount
  iRecordCount = iRecordCount + 1
  nTotalPremAmount = nTotalPremAmount + nPremAmount
  
  '**Combine the row record and write into the text file
  Call objText.WriteLine(sDetailRecord)
  
  
'Next Record
  iRowNo = iRowNo + 1
Wend


'**Verify and Write the footer into the text file
sFooterTransCode = Left(UCase(getCellValue(sResourceSheet, iRowNo, 1)) & Space(5), 5)

sFiller2 = String(9, "9")

nFooterTotalAmount = getCellValue(sResourceSheet, iRowNo, 4)
'Total Amount, the length is 9
sFooterTotalAmount = Right("00000" & nFooterTotalAmount * 100, 9)


If Abs(nTotalPremAmount - nFooterTotalAmount) > 0.001 Then
    'Report Error
    sErrorMsg = "The footer total premium amount is not equal with the actual total premium! Please check it again!"
    GoTo Err_Line
End If

sFooterRecord = sFooterTransCode & sFiller2 &  sFooterTotalAmount

'**Insert the last row record and write into the text file
Call objText.WriteLine(sFooterRecord)

convertExcelToText = ""

Exit Function

Err_Line:
    
    
    If Err.Number = 0 Then
    
    convertExcelToText = sErrorMsg
    
    Else
    
    convertExcelToText = sErrorMsg & vbCrLf & _
            "Unexpected Error:" & Err.Number & "-" & Err.Description
    
    End If
    
    objText.Close
    
    'Remove the file to be generated
    Kill sFileName
    'fso.deletefile sFileName, force
    Exit Function
分享到:
评论

相关推荐

    读取Excel数据生成XML文件

    综上所述,实现“读取Excel数据生成XML文件”的过程涉及到对Excel数据的处理、XML语法的理解,以及利用编程语言如Python中的工具进行转换。同时,提供详细的使用说明和资源链接可以帮助用户更好地理解和应用这个过程...

    excel 文件转换成文本文件

    我们可以利用pandas库来读取Excel文件,并使用to_csv函数将每个sheet转换为文本文件。以下是一个简单的Python脚本示例: ```python import pandas as pd # 读取Excel文件 xls = pd.ExcelFile('your_file.xls') # ...

    AutoLISP例程:读取excel文件.doc

    在实际应用中,AutoLISP 读取 Excel 文件的技术可以应用于各种自动化场景,例如自动生成报告、自动化数据处理和自动化绘图等。同时,AutoLISP 也可以与其他技术集成,例如使用 AutoLISP 读取 Excel 文件,然后使用...

    VB6提取文本数据,生成EXCEL

    在VB6(Visual Basic 6)环境中,我们可以利用其强大的编程能力来处理各种数据操作,如从文本文件中提取数据并生成Excel报表。这个过程通常包括以下步骤: 1. **读取文本文件**:VB6提供了`OpenTextFile`函数,通过...

    读取大数据量的excel文件

    本案例采用的poi读取大数据的excel文件 usermodel模式对excel操作前需要将文件全部转入内存,对较大文件来说内存开销很大。但是其使用简单。 eventusermodel模式采用事件模型,对文件边读取边处理,内存消耗较低,...

    ini和Excel文件的读取

    // 读取Excel FileInfo excelFile = new FileInfo("data.xlsx"); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage excel = new ExcelPackage(excelFile)) { ExcelWorksheet ...

    Labview 读Excel数据

    `Excel File Read` VI允许你打开并读取Excel文件中的数据,而`Excel File Write` VI则用于写入数据。 2. **工作表和单元格访问**:在LabVIEW中,你需要指定要读取的工作表名称或索引以及具体单元格的位置。通常,...

    读取excel文件,生成java文件9.pdf

    本文将介绍如何使用编程语言读取Excel文件并生成Java文件,具体以一个VB.NET的应用程序为例。在VB.NET中,我们通常利用Microsoft.Office.Interop库来与Excel交互,实现读取Excel数据并根据这些数据生成Java类或文件...

    读取excel文件,生成java文件.pdf

    该文件的标题和描述提到了“读取excel文件,生成java文件”,这通常是指通过编程方式解析Excel数据并自动生成Java源代码的过程。虽然提供的内容是VB.NET代码,但我们可以根据这个主题推断出相关知识点。 1. **Excel...

    golang读取excel模板批量生成word工具.zip

    本项目涉及的知识点是使用Go语言读取Excel模板并批量生成Word文档,这在数据处理、报告自动化或者批量生成定制化文档的场景中非常实用。下面将详细介绍这个过程中的关键技术点。 1. **Go语言基础**: - Go语言是一...

    spring boot读取Excel操作示例

    Spring Boot 框架在实际开发中经常需要读取 Excel 文件,以便于数据导入、导出或报表生成等操作。为了实现 Spring Boot 读取 Excel 操作,需要使用 Apache POI 库,该库提供了对 Excel 文件的读写操作。 依赖配置 ...

    Mac/IOS 读取excel文件

    3. **使用DHlibxls读取Excel文件**: - 首先,创建一个`XLS`对象来表示Excel文件。 - 然后,使用`openFile:`方法打开文件。 - 通过`workbook`属性访问工作簿,可以获取到工作表(worksheet)的数组。 - 对每个...

    asp读取数据库数据并生成excel文件实例.pdf

    总的来说,这个实例展示了ASP如何结合ADO从数据库中获取数据,并使用文本文件模拟生成Excel文件的过程。然而,现代的解决方案可能更倾向于使用更高级的库,如`Microsoft.Office.Interop.Excel`(需要在服务器上安装...

    C#读取文件然后将数据导入Excel表格

    在C#编程中,将数据从文本文件读取并导入Excel表格是一项常见的任务,尤其在数据分析、报表生成或数据迁移等场景中。本教程将基于VS2010环境,教你如何利用C#实现这一功能。 首先,我们需要了解C#中用于文件读写的...

    单片机输出生成EXECL文件

    在生成文本文件时,单片机应将每个字符转换为其对应的ASCII码值,并以二进制形式写入文件。 2. **数据分隔**:在每组数据之间插入一个十六进制字节09H(十进制10),可以作为数据间的分隔符。这样做的目的是为了...

    如何在WINCC中基于VBS实现对EXCEL文件中数据的读写?.docx

    为了与其它系统交互,如进行数据记录和分析,经常需要将数据写入或读取Excel文件。本篇将详细介绍如何在WINCC中基于Visual Basic Script (VBS)实现对Excel文件中的数据进行读写操作。 首先,我们需要了解基础的VBS...

    从Excel中读取数据导入到数据库中

    3. **使用其他格式**:如果可能,可以考虑将超长文本存储在单独的表格或文件中,然后通过外键关联到主数据表。 在实际操作中,Python的pandas库是一个强大的工具,可以方便地读取Excel文件(`pd.read_excel()`)和...

    python:从excel中提取高频词生成词云

    `pandas`是用于处理表格数据的强大库,而`openpyxl`或`xlrd`则用来读取Excel文件。对于词云的生成,我们将使用`wordcloud`库。确保已经安装了这些库,如果没有,可以使用以下命令进行安装: ```bash pip install ...

    excel文件中批量生成insert语句

    本文将详细讲解如何在Excel文件中批量生成INSERT语句,以便快速地将数据导入到数据库中。 首先,我们需要了解INSERT语句的基本结构。INSERT语句用于向数据库表中插入新的记录,其基本语法如下: ```sql INSERT ...

    读取Excle生成Class类代码

    标题中的“读取Excel生成Class类代码”是指利用C#编程语言,在Visual Studio 2017环境下,开发一个Winform应用程序,该程序能够读取Excel文件中的数据,并将其转换成C#类(Class)的代码形式。这个过程通常涉及以下...

Global site tag (gtag.js) - Google Analytics