首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在同一个循环中“读.csv,写excel”

如何在同一个循环中“读.csv,写excel”
EN

Stack Overflow用户
提问于 2019-05-29 05:40:57
回答 1查看 39关注 0票数 0

我尝试从.csv文件中读取数据并将其粘贴到3270终端屏幕上,同时将这些尝试的结果写入到与.csv完全对应的excel文件中

我已经创建了读取.csv文件并将值粘贴到3270屏幕上的代码。但是在excel中很难引用精确的行/行来写入结果

这是我的循环:

代码语言:javascript
运行
复制
  strLine = objFile.ReadLine
  Do Until objFile.AtEndOfStream                
     arrFields = Split(strLine,",") 
     subDoWork (strLine)
  strLine = strLine + 1
  Loop

然后,subDoWork读取.csv并粘贴数据:

代码语言:javascript
运行
复制
Sub subDoWork(strLine)

    ColumnA = arrFields(0)
    ColumnB = arrFields(1)

     subMoveCursor 1, 10                                                                                             
     subEnterData ColumnA

    If (funcReadScreen(12,27,1) <> "0") Then

      oExcelObject.Cells(3).Value = "Skipped SAF1"
      oExcelObject.DisplayAlerts = False
      ExcelWorkbook.Save
    End If
End Sub

我在这里创建对象,并在获取扩展文件时设置变量:

代码语言:javascript
运行
复制
Set oExcelObject = CreateObject("Excel.Application")
Set oFileObject  = CreateObject("Scripting.FileSystemObject")

 Sub subExternalFile
   rw = 2
   strFilter = ""
   strExternalFilePath = funcSolicitFile(strFilter)
   strExternalFilePath1 = 
     "\\DAYFS02\mortvc$\_Scripts_Custom\DisasterScript_OutPut.xlsx"
       Set objFile  = oFileObject.OpenTextFile(strExternalFilePath)
       Set oExcelFile   = oFileObject.GetFile(strExternalFilePath1)
       strExcelFileName = oExcelFile.Name
       Set oExcelObject = GetObject("","Excel.Application")
       Set ExcelWorkbook = 
       oExcelObject.Workbooks.Open(strExternalFilePath1)
       Set oExcelSheet   = ExcelWorkbook.Sheets(1)
   oExcelObject.Application.Visible = False
 End Sub

我希望从文本文件的第1行开始读取。要读取arrfield(0)和arrfield(1),只需两列,然后将该数据粘贴到3270屏幕上。如果屏幕上显示了特定的内容,则写入到C (3)列中的excel文件的第1行。然后移动到第2行,执行相同的操作,读取.csv文件,然后写入excel文件中相应行号的第(3)列。

当它试图写入excel文件时,我得到的错误是找不到该对象。尽管我正在创建对象。当我试图计算strLine时,我也得到了一个“类型不匹配”的错误,以便我可以移动到下一行/行。

-编辑2019年5月29日-我让它工作了。我能够在.csv文件中从一行移动到另一行并粘贴到屏幕上。但是,在写入excel时,每次都会覆盖C列(第2行,第一行是标题)。我不能让它根据.csv的第3行的结果写入excel的第3行C列。我也没有将.csv的第一行标识为标题,事实上,我从.csv中删除了标题,但仍然将标题保留在excel文件中(第1行)。因此,从技术上讲,.csv中的第1行是excel中的第2行。我不确定是否需要在第一个循环中放置一个循环,以便计算excel中的行数,并确保根据.csv中的行将数据写入excel中的正确行。非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-05-29 14:00:05

由于您正在尝试将整数(1)添加到此行中的字符串,因此您得到的类型不匹配。

代码语言:javascript
运行
复制
strLine = strLine + 1

如果您想要跟踪您正在处理的行,则需要暗显一个新的行计数器变量。您还需要读取循环中的行,否则将以无限循环结束。

如下所示:

代码语言:javascript
运行
复制
dim i
i = 0
Do Until objFile.AtEndOfStream   
   strLine = objFile.ReadLine             
   arrFields = Split(strLine,",") 
   subDoWork  strLine
   i = i + 1
Loop
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56350389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档