开发一个计数器输出数据信息到一个特定的行和列的范围?

我是一个初学Python的人,只有基本的基础知识。 循环和模块。 我有一些数据,我想通过导出为文本到特定的Microsoft Excel单元格自动化。

具体来说,我有3个文件夹,每个文件夹中都有图像文件,共有10个图像文件。 我的目标是创build一个打开excel的代码,并在列A的每个降序行中输出文件夹path的名称,并在列B的降序行中输出相应的图像文件名称。

到目前为止,我已经定义了文件夹和path,并允许我的代码打开Excel并命名表单并放入标题。当我试图单独迭代每个文件夹/文件到一个新的单元格时遇到了我的问题。 我尝试使用范围函数,但它不适用于string,我觉得像一个简单的计数器variables将工作,但同样,Excel列和行名称是string。

这是我的代码到目前为止:

import win32com.client import sys, os, string, arcpy data_folder = "F:\\School\\GEOG_390\\Week11\\data" xlApp = win32com.client.Dispatch("Excel.Application") xlApp.Visible = 1 xlApp.Workbooks.Add() print(xlApp.Worksheets("Sheet1").Name) xlApp.Worksheets("Sheet1").Range("A1").Value= "Data Files:" for root, folders, files, in os.walk(data_folder): for folder in folders: workspace = os.path.join(root, folder) print( "Processing" + " " + workspace) arcpy.env.workspace = workspace rasters = arcpy.ListRasters("*", "IMG") for raster in rasters: arcpy.BuildPyramids_management(raster) arcpy.CalculateStatistics_management(raster) print(raster) sheet = xlApp.Worksheets("Sheet1") sheet.Range("A2").Value = "Folder:" + folder sheet.Range("B2").Value = "Raster:" + raster print(sheet.Range("A2").Value) print(sheet.Range("B2").Value) 

我需要代码将文件夹名称1放在单元格A2中,将图像文件名称放在B2中,然后从单元格A3中的文件夹2和单元格B3中的文件2中一直添加到单元格A11和B11。

如果我正确地理解了这个问题,那么在每次处理一个文件的时候,如何增加单元格的名字(例如“A2”和“B2”)是很困难的。 如果这不是问题,我很抱歉。

(1)在第一个for循环之前,声明一个variablescell_row ,该variables将跟踪将要创build下一对单元格的行号。 它从2开始。

 cell_row = 2 

(2)修改循环的结尾,如下所示:

  folder_cell = "A" + str(cell_row) raster_cell = "B" + str(cell_row) sheet = xlApp.Worksheets("Sheet1") sheet.Range(folder_cell).Value = "Folder:" + folder sheet.Range(raster_cell).Value = "Raster:" + raster print(sheet.Range(folder_cell).Value) print(sheet.Range(raster_cell).Value) cell_row += 1 

你需要以方法名称的方式来考虑它

 def get_xls_range(start,end): letter1,num1 = start[0],int(start[1:]) # get the alpha part and the numeric part letter2,num2 = end[0],int(end[1:]) # same for end #convert the letters to a range range_rows = [chr(x) for x in range(ord(letter1),ord(letter2)+1)] #convert the numerics to a range range_cols = range(num1,num2+1) for row in range_rows: for col in range_cols: yield "%s%s"%(row,col) 

那么你所需要做的就是与你的新function进行交互

  for cell in get_xls_range("A1","B22"): print cell