2016-10-18 83 views
2

我在Windows 10上使用Python 3.5。希望我能闡明我想要完成的任務,同時允許儘可能少的混淆......在Python 3.5中使用XlsxWriter創建圖表,其中系列值基於循環

我已經編寫了一個Python腳本來執行幾個任務,其中一些任務包括通過XlsxWriter基於腳本前面部分的代碼生成的數據創建一個Excel工作簿。我試圖讓我的腳本創建一個圖表,再次使用基於這些數據的XlsxWriter。我在網上看到了幾個可用的示例,雖然有用,但示例和我自己的個人代碼之間有一個特定的區別,這使我不確定如何繼續。

當試圖向圖表添加一個系列時出現了我的問題。在配置系列,我已經來了幾個例子,包括跨越這樣的事情(注:我不實際使用這個確切的代碼):因爲我的劇本的性質涉及循環和

chart.add_series({ 
'name': '=Sheet1!$A$2:$A$7 ' 
}) 

生成的數據可以填充到各個列和行中,所以我不能像'name'這樣的固定引用分配類似'Sheet1!$ A $ 2:$ A $ 7'的東西,因爲雖然從我的腳本生成的所有數據將存在於同一張紙上,它永遠不會始終只在列「A」中並且僅在單元格2到7之間。

那麼,我該如何解決這個問題?同樣,由於變量項等,我告訴XlsxWriter填充單元格的方式是創建變量row_1 = 0col_1 = 0並根據需要遞增它們。我能寫類似

chart.add_series({ 
'name': '=Sheet1!row:col+7' 
}) 

通過XlsxWriter?

編輯:所以我剛剛發現我可以用這似乎是我的解決方法,以添加一系列的圖表替代索引。因爲我使用的變量作爲我的指標

chart.add_series({ 
'Subscribers': ['Sheet1', row_1 + 2, col_1, 
       2 + len(sb_subCount_list_clean), col_1] 
}) 

是這樣的:不過,我得到了以下錯誤消息:

UserWarning: Must specify 'values' in add_series() 
warn("Must specify 'values' in add_series()") 

基於此位的代碼? sb_subCount_list_clean是一個包含我用來創建圖表的數據的列表。該列的長度加2,因爲我有一些頭佔據前兩個單元格。

回答

0

在XlsxWriter API的幾乎所有地區,任何地方有像A1單元格引用或類似=Sheet1!$A$1你可以使用一個元組或值的列表的範圍。對於圖表,你可以使用這樣的值的列表:

# String interface. This is good for static ranges. 
chart.add_series({ 
    'name':  '=Sheet1!$A$1', 
    'categories': '=Sheet1!$B$1:$B$5', 
    'values':  '=Sheet1!$C$1:$C$5', 
}) 

# Or using a list of values instead of name/category/value formulas: 
#  [sheetname, first_row, first_col, last_row, last_col] 
# This is better for generating programmatically. 
chart.add_series({ 
    'name':  ['Sheet1', 0, 0  ], 
    'categories': ['Sheet1', 0, 1, 4, 1], 
    'values':  ['Sheet1', 0, 2, 4, 2], 
}) 

參考docs

至於你(後編輯)得到的錯誤:Subscribers不是XlsxWriter參數,則可能意味着values

chart.add_series({ 
     'values': ['Sheet1', row_1 + 2, col_1, 
       2 + len(sb_subCount_list_clean), col_1] 
}) 
+0

非常感謝您!我遇到了像您提到的那樣將單元格作爲值列表引用! – erik7970

相關問題