Tag: python

pandas阅读excel值不是公式

有没有办法让pandas只读取Excel中的值而不是公式? 它读NaN中的公式,除非我进入并在运行代码之前手动保存excel文件。 我只是用pandas的基本读取excel函数, import pandas as pd df = pd.read_excel(filename, sheetname="Sheet1") 这将读取值,如果我已经进入并保存该文件之前运行的代码。 但是在运行代码来更新一个新表单之后,如果我不进去并保存这个文件并且试着再次运行这个文件,它会把公式读作NaN而不是只读取这些值。 是否有任何人知道这只会读取大pandas的价值观?

使用Python更新Excel电子表格中的链接

我正在Python中运行模拟,生成输出,需要由他们的Excel工作簿中的build模人员直接使用。 我生成的代码将直接输出我的数据到他们的Excel电子表格模板。 我已经生成的代码直接输出到他们的模板的代码是好的,但我遇到的问题是,build模者有一系列的“链接”在一起的工作簿。 如果我将数据插入到电子表格中,除非用户以“编辑链接” – >“更新值”的forms打开工作簿,否则指向该工作簿的链接不会更新。 如果有一个工作簿,那么用户可以简单地打开工作簿,没有问题。 实际上,将会有100多个工作簿需要更新链接。 不幸的是,我没有办法改变build模人员链接工作簿的方法 – 我唯一能做的就是调整他们的方法。 我的目标是创build一个Python解决scheme,允许我1)生成模拟数据,2)将我生成的数据插入到build模者的工作簿中,3)更新工作簿之间的所有链接。 最终,为了简化,我希望能够在一个端到端的Python程序中做所有的三个。 我已经解决了(1)和(2),并且我对(3)的解决scheme几乎可行。 我已经生成了以下function脚本: from win32com.client import Dispatch import pandas as pd from openpyxl import load_workbook import os import time def run_macro(workbook_name, vba_sub, com_instance): wb = com_instance.workbooks.open(workbook_name) wb.RefreshAll() xl_module = wb.VBProject.VBComponents.Add(1) xl_module.CodeModule.AddFromString(vba_sub.strip()) com_instance.Application.Run('UpdateLinkValues') wb.Save() wb.Close() return True def main(): dir_root = ("C:\\Model_Spreadsheets") vba_sub = […]

xlwings图表模拟器 – 无法用模拟图表复制macros表

我从xlwings下载了模拟图表,以及excel调用来运行模拟的.py Python脚本。 复制Excel工作簿上的工作表。 保存附加的.py脚本并重新链接所有对复制表单的引用。 在Alt + F11上用新名称创build新函数,调用复制的.py脚本。 检查引用错误,除了复制的Excel选项卡由于.py脚本中的错误行而无法为图表运行模拟外, set_source_data(sht.range((1,15),(num_timesteps + 2,19))) 具体来说,似乎突出了“图5”的问题。 我不知道一个解决方法,而不做重大的代码更改。 以下完整的错误描述: 错误 回溯(最近一次通话最后): 文件“”,第1行, 文件“GBM_2.py”,第26行,在主sht.charts ['Chart 5']。set_source_data(sht.range((1,15),(num_timesteps + 2,19))) 文件“C:\ Users \ Darius \ Miniconda2 \ lib \ site-packages \ xlwings \ main.py”,第78行,在getitem return self(key) 文件“C:\ Users \ Darius \ Miniconda2 \ lib \ site-packages \ xlwings \ main.py”,第49行, 调用 return self._wrap(impl […]

ezPyCrypto来encryptionMS Excel文件

我正尝试通过Python密码保护MS Excel文件。 到目前为止,我发现这不可能通过普通的Excel库(如openPyXL和XLSX Writer)来实现。 我想这意味着我首先需要encryption它。 如果我错了,或者如果有更好的方法,请纠正我。 密码保护位是最重要的,这在下面没有提到,除非很容易为此添加代码。 到目前为止,这里是我的encryption: from ezPyCrypto import key file_in = r'P:\Data\sample_file.xlsx' file_out = file_in[:-5]+'_enc.xlsx' f_in = open(file_in, 'rb') f_out = open(file_out,'wb') in_str = f_in.read() out_str = key(in_str) f_out.write(out_str) f_in.close() f_out.close() 但是,我不断收到这个错误: ImportError Traceback (most recent call last) <ipython-input-36-ed5218b0d47c> in <module>() 2 #https://github.com/sfbahr/PyCrypto-Wheels —-> 3 from ezPyCrypto import key 4 file_in = […]

如何将xls中的所有字段作为string导入pandas数据框?

我正在尝试从xlsx导入一个文件到一个Python Pandas数据框。 我想阻止字段/列被解释为整数,从而失去前导零或其他所需的异构格式。 所以对于一个有100列的Excel工作表,我会用范围(99)的dict理解来做下面的事情。 import pandas as pd filename = 'C:\DemoFile.xlsx' fields = {col: str for col in range(99)} df = pd.read_excel(filename, sheetname=0, converters=fields) 这些导入文件始终有不同数量的列,我正在寻找处理这种方式,而不是一直手动更改范围。 有人有任何进一步的build议或替代Excel文件读取到一个数据框,默认情况下所有字段视为string? 非常感谢!

如何在Excel中使用xlsx包在Python中格式化特定的单元格

我有一个pandasdf,我正在格式化使用xlsx包目前我可以select使用xlsx格式化整行或列,但不是特定的单元格也想在DF之间插入几行。 图片附加了我希望看到的Excel文件。 下面的代码给了我在图像的第一部分的文件。 我需要做一些更多的格式,比如插入新的行,使D13和E13用斜体表示。 writer = pd.ExcelWriter('Sample Report Test.xlsx' , engine='xlsxwriter') df.to_excel(writer , index= False , sheet_name='Sample Report') workbook = writer.book worksheet = writer.sheets['Sample Report'] money_fmt = workbook.add_format({'num_format':'$#,##0' , 'font_name':'Batang' }) font_fmt = workbook.add_format({'font_name':'Batang' , 'bold':True }) tot_fmt = workbook.add_format({'num_format':'$#,##0' , 'font_name':'Batang' , 'bold':True }) worksheet.set_column('A:B' , 25 , font_fmt) worksheet.set_column('C:P' , 15 , money_fmt) […]

如何parsingExcel表格中的数据框(使用Python,可能是Pandas)

我正在处理严重的Excel表格,我试图parsing并写入数据库。 每张纸可以有多个表。 尽pipe这些可能的表格的标题是已知的,但是在任何给定的表格上哪些表格不是,它们在表格上的确切位置(表格不以一致的方式alignment)。 我已经添加了两个可能的工作表布局的图片来说明这一点: 这个布局有两个表,而这个表有第一个表的所有表,但不在同一个位置,加上一个额外的表。 我所知道的是: 所有可能的表头,所以每个单独的表可以通过它的头标识 表格由空格分隔。 他们不相互接触。 我的问题是否有一个干净的方式来处理这个使用一些Python模块,如pandas? 我目前的做法 : 我目前正在转换为.csv并parsing每一行。 我将每行分割为空白单元格,并处理该行的第一部分(应该属于最左边的表格)。 行的其余部分排队并稍后以相同的方式处理。 然后我读这个first_part并检查它是否是一个标题行。 如果是这样,我用它来确定我正在处理哪个表(这是存储在一个全球current_df )。 后面的行不是标题行被送入这个表(这里我使用pandas.DataFrame为我的表)。 目前的代码是低于(大部分是不完整的,未经testing,但它应该传达上面的方法): class DFManager(object): # keeps track of current table and its headers current_df = None current_headers = [] def set_current_df(self, df, headers): self.current_headers = headers self.current_df = df def split_row(row, separator): while row and row[0] == […]

转换列表中的一列

我想在Excel的字典列表中转换一列。 可能吗? input样本: ABCDE 0.00 10.00 22.00 10.00 15.00 1.00 81.29 28.00 23.33 18.38 输出样本: somefunc(column="A") [{ "A": 0.00 }, { "A": 1.00 }] 目前我使用这个代码,然后删除额外的键..这是没有任何意义的。 def to_dict(file_path, header_index=0, sheet_index=0): data, keys, sheet = {}, [], _read(file_path).sheet_by_index(sheet_index) for col_index in xrange(0, sheet.ncols): keys.append(sheet.cell(header_index, col_index).value.encode("utf-8")) for row_index in xrange(2, sheet.nrows): for col_index in xrange(sheet.ncols): if keys[col_index] not […]

通过阅读使用海龟的Excel坐标绘制点图

这是我第一次发帖。 我对Python真的很陌生,几个星期前刚刚开始上课。 我正在读取一个包含(x,y)坐标的Excel文件,读完之后,我将不得不相应地画点。 我已经为我的点做了一个函数,读取文件并将它们分成两个列表x []和y []。 我在将X,Y值从我的x []和y []传递给我的dot()函数时遇到了问题。 我在网上search类似的问题,但没有运气,我相信这是由于我在编程方面的经验不足。 希望得到你们的一些提示。 我已经发布了我的代码如下。 非常感谢。 import turtle def dot(x, y): t = turtle.Turtle() t.pensize(2) t.up() t.goto(x, y) t.color("red") t.down() t.begin_fill() t.circle(25) t.color("red") t.end_fill() turtle.done() def a(): x, y = [], [] handle = open("SineWave.csv") for line in handle: line = line.rstrip() line = line.split(",") x.append(line[0]) y.append(line[1]) x […]

如何逐行读取多个文本文件,并发送到Excel每个文件后移动到一个新的列?

我build立一个脚本运行重复testing,每个日志文件将被读取和编译到电子表格。 每个文件和行的数量将根据时间和期望的演变而变化。 我有一个基本的脚本,逐行读取一个文件,并将数据粘贴到一个单独的excel文件中连续的行。 from openpyxl import load_workbook from Test_Parameters import Results_Name from Downstream import Log_Angle wb = load_workbook(filename= Results_Name +'.xlsm', read_only=False, keep_vba=True) ws7 = wb['timeData'] FILE = open('0_Downstream.txt', 'r+') line = FILE.readline() N = '2' while line !="": print(line) ws7['A'+N] = line line = FILE.readline() N = float(N) N = (N+1) N = "%g" % […]