首页 > 解决方案 > 如何将工作表变量转换为 Python 中的列表列表?

问题描述

我通过以下方法从 excel 文件中读取表格:

workbook = excel.Workbooks.Open(filename)
inputdata=workbook.Worksheets("Values").Select() ## Select Worksheet by Name     
ws1 = workbook.Worksheets("Values") #workbook.ActiveSheet.Name

当我在命令提示符下键入 ws 我得到

System.__ComObject

我可以通过以下方式访问 ws1 中的表:

print ws1.Cells(i,j).Value2

但我需要通过以下方式获得表格:

table =[[row1], [row2],[row3],...]

做 dir(ws1) 我有

['ACTIVATE', 'Activate', 'Application', 'Arcs', 'AutoFilter', 'AutoFilterMode', 'BEFOREDELETE', 'BEFOREDOUBLECLICK', 'BEFORERIGHTCLICK', 'Buttons', 'CALCULATE', 'CHANGE', '计算'、'单元格'、'ChartObjects'、'CheckBoxes'、'CheckSpelling'、'CircleInvalid'、'CircularReference'、'ClearArrows'、'ClearCircles'、'CodeName'、'Columns'、'Comments'、'CommentsThreaded' ,'ConsolidationFunction','ConsolidationOptions','ConsolidationSources','Copy','CreateObjRef','Creator','CustomProperties','DEACTIVATE','Delete','DisplayAutomaticPageBreaks','DisplayPageBreaks、“DisplayRightToLeft”、“DrawingObjects”、“Drawings”、“DropDowns”、“EnableAutoFilter”、“EnableCalculation”、“EnableFormatConditionsCalculation”、“EnableOutlining”、“EnablePivotTable”、“EnableSelection”、“Equals”、“Evaluate” 、'ExportAsFixedFormat'、'FOLLOWHYPERLINK'、'FilterMode'、'GetHashCode'、'GetLifetimeService'、'GetType'、'GroupBoxes'、'GroupObjects'、'HPageBreaks'、'Hyperlinks'、'Index'、'InitializeLifetimeService'、' LENSGALLERYRENDERCOMPLETE', 'Labels', 'Lines', 'ListBoxes', 'ListObjects', 'MailEnvelope', 'MemberwiseClone', 'Move', 'Name',“名称”、“下一步”、“OLEObjects”、“OnCalculate”、“OnData”、“OnDoubleClick”、“OnEntry”、“OnSheetActivate”、“OnSheetDeactivate”、“OptionButtons”、“大纲”、“椭圆”、“PIVOTTABLEAFTERVALUECHANGE” '、'PIVOTTABLEBEFOREALLOCATECHANGES'、'PIVOTTABLEBEFORECOMMITCHANGES'、'PIVOTTABLEBEFOREDISCARDCHANGES'、'PIVOTTABLECHANGESYNC'、'PIVOTTABLEUPDATE'、'PageSetup'、'Parent'、'Paste'、'PasteSpecial'、'Pictures'、'PivotTableWizard'、'PivotTables 'Previous'、'PrintOut'、'PrintPreview'、'PrintedCommentPages'、'Protect'、'ProtectContents'、'ProtectDrawingObjects'、'ProtectScenarios'、'Protection'、'ProtectionMode'、'QueryTables'、'Range'、'Rectangles'、'ReferenceEquals'、'ResetAllPageBreaks'、'Rows'、'SELECTIONCHANGE'、'SaveAs'、'Scenarios'、'Scripts'、'ScrollArea' , 'ScrollBars', 'Select', 'SetBackgroundPicture', 'Shapes', 'ShowAllData', 'ShowDataForm', 'SmartTags', 'Sort', 'Spinner', 'StandardHeight', 'StandardWidth', 'TABLEUPDATE', ' Tab','TextBoxes','ToString','TransitionExpEval','TransitionFormEntry','Type','Unprotect','UsedRange','VPageBreaks','Visible','XmlDataQuery','XmlMapQuery','_AutoFilter' ,'_CheckSpelling'、'_CodeName'、'_DisplayRightToLeft'、'_Evaluate'、'_ExportAsFixedFormat'、'_PasteSpecial'、'_PrintOut'、'_Protect'、'_SaveAs'、'_Sort'、'PrintOut'、'__SaveAs'、'__class '、' delattr '、' doc '、' format '、' getattribute '、' hash '、' init '、' new '、' reduce '、' reduce_ex '、' repr ' , ' setattr ', ' sizeof ', ' str ', ' subclasshook ']

我尝试了这个循环,但它增加了过多的值

innerlist=[];
mygrid=[]
for i in range(2,14):
    for j in range(2,22):
        innerlist.append(ws1.Cells(i,j).Value2)
    mygrid.append(innerlist)

只有一点:我在另一个软件中使用 python add in,所以我不能使用 pandas 等库。我可以只使用简单的循环和算法

标签: pythonexcel

解决方案


推荐阅读