我是Python的新手。
我使用putty来管理一些服务器。我想使用Python在每台服务器上创建一个Excel文件,我想如果我可以使用ssh ip "python abc.py"
这样的命令来创建文件。可以编写一个bash脚本来管理所有服务器。这是我遇到的麻烦:
服务器无法使用互联网。
不允许使用任何第三方库。当安装了linux(redhat 6.5)时,python中是否有可用于立即创建Excel的库? 请帮助我,谢谢。
答案 0 :(得分:4)
不幸的是,这不可能。创建Excel文件可能需要在客户端运行两个部分:
Python标准库不包含Office产品的包装器。相反,它们为逗号分隔值文件提供商品,这些文件可以通过Excel轻松读取。
Openpyxl项目与Open XML format一起使用,然后就不需要安装Office。引用其文档:
Openpyxl是一个用于读写Excel 2010的Python库 xlsx / xlsm / xltx / xltm文件。
它诞生于缺乏现有的库本地读/写 Python Office Open XML格式。
然后,您只需使用此程序包更新Python设置即可创建电子表格。
如果您的服务器无法访问互联网但接受要安装的外部媒体,则可以在另一台计算机上下载source并将其存储在可移动媒体上,将媒体安装在服务器上,然后将其解压缩并安装使用python setup.py
接口:
tar -xvzf openpyxl.tar.gz /somepath
cd /somepath/to/installer
python setup.py install
它适用于Debian(没有安装办公室,使用pipy源):
>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.save('test.xlsx')
生成Excel可读的空电子表格。
答案 1 :(得分:3)
实际上还有一种方法。如果你有一个空的excel文件,你可以打开它作为一个zip文件,这是内容
.
├── [Content_Types].xml
├── docProps
│ ├── app.xml
│ ├── core.xml
│ └── custom.xml
├── _rels
└── xl
├── calcChain.xml
├── charts
│ ├── chart1.xml
│ ├── chart2.xml
│ ├── colors1.xml
│ ├── colors2.xml
│ ├── _rels
│ │ ├── chart1.xml.rels
│ │ └── chart2.xml.rels
│ ├── style1.xml
│ └── style2.xml
├── drawings
│ ├── drawing1.xml
│ ├── drawing2.xml
│ └── _rels
│ ├── drawing1.xml.rels
│ └── drawing2.xml.rels
├── printerSettings
│ └── printerSettings1.bin
├── _rels
│ └── workbook.xml.rels
├── sharedStrings.xml
├── styles.xml
├── theme
│ └── theme1.xml
├── workbook.xml
└── worksheets
├── _rels
│ ├── sheet1.xml.rels
│ └── sheet2.xml.rels
├── sheet1.xml
└── sheet2.xml
在这个文件中,我有两张表与工作簿上的标签相比。
xl目录中的workbook.xml上有工作表的名称,如下所示:
<sheets><sheet name="Test1" sheetId="1" r:id="rId1"/><sheet name="Test2" sheetId="2" r:id="rId2"/></sheets>
和工作表目录中的每个工作表(1/2).xml包含列/行
它看起来像这样:
<dimension ref="A1:J1352"/>
<sheetViews>
<sheetView topLeftCell="A3" workbookViewId="0">
<selection activeCell="F28" sqref="F28"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="14.4" x14ac:dyDescent="0.3"/>
<cols>
<col min="1" max="1" width="27.6640625" customWidth="1"/>
<col min="2" max="2" width="15.109375" customWidth="1"/>
<col min="3" max="3" width="14.6640625" customWidth="1"/>
<col min="4" max="4" width="15.33203125" customWidth="1"/>
<col min="7" max="7" width="13.6640625" customWidth="1"/>
</cols>
<sheetData>
<row r="1" spans="1:10" x14ac:dyDescent="0.3">
<c r="A1" t="s">
<v>1</v>
</c>
</row>
<row r="2" spans="1:10" x14ac:dyDescent="0.3">
<c r="B2" t="s">
<v>4</v>
</c>
<c r="C2" t="s">
<v>5</v>
</c>
<c r="D2" t="s">
<v>6</v>
</c>
</row>
<row r="3" spans="1:10" x14ac:dyDescent="0.3">
<c r="A3" s="1">
<v>42969.681041666663</v>
</c>
<c r="B3">
<v>892.76</v>
</c>
<c r="C3">
<v>138.62</v>
</c>
<c r="D3">
<v>138.62</v>
</c>
</row>
<row r="4" spans="1:10" x14ac:dyDescent="0.3">
<c r="A4" s="1">
<v>42969.68173611111</v>
</c>
<c r="B4">
<v>954.83</v>
</c>
<c r="C4">
<v>88.97</v>
</c>
<c r="D4">
<v>88.97</v>
</c>
<c r="G4" s="4"/>
<c r="H4" s="3" t="s">
<v>9</v>
</c>
<c r="I4" s="3" t="s">
<v>10</v>
</c>
<c r="J4" s="3" t="s">
<v>11</v>
</c>
</row>
<row r="5" spans="1:10" x14ac:dyDescent="0.3">
<c r="A5" s="1">
<v>42969.682430555556</v>
</c>
<c r="B5">
<v>875.17</v>
</c>
<c r="C5">
<v>94.14</v>
</c>
<c r="D5">
<v>94.14</v>
</c>
<c r="G5" s="3" t="s">
<v>2</v>
</c>
<c r="H5" s="3">
<f>AVERAGE(B3:B1352)</f>
<v>699.96431851851924</v>
</c>
<c r="I5" s="3">
<f>MAX(B3:B1352)</f>
<v>1270.3399999999999</v>
</c>
<c r="J5" s="3">
<f>MIN(B3:B1352)</f>
<v>177.93</v>
</c>
</row>
</sheetData>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
<pageSetup orientation="portrait" r:id="rId1"/>
<drawing r:id="rId2"/>
</worksheet>
因此,如果您可以正确使用标记修改xml文件,则可以使用文本编辑器和压缩程序更改或创建Excel工作表
答案 2 :(得分:1)
如果您尚未尝试,请尝试使用CSV。
答案 3 :(得分:1)
我发现不推荐使用这种方法,但是确实可以解决问题。
例如,我使用第三个图片openpyxl
来说明如何做到这一点。
不允许每台机器随意安装模块,但是您可以上传任何文件。
查找网络计算机,执行pip install openpyxl
cd您的pacakge目录,在我的机器上是cd /usr/lib/python2.7/site-packages/
压缩最近更新的目录或文件。您可以使用ls -ltr | tail -10
drwxr-xr-x 3 root root 4096 Jan 12 11:21 shadowsocks
drwxr-xr-x 2 root root 4096 Jan 12 11:21 shadowsocks-2.8.2-py2.7.egg-info
-rw-r--r-- 1 root root 12462 Apr 21 10:38 jdcal.py
-rw-r--r-- 1 root root 13004 Apr 21 10:38 jdcal.pyc
drwxr-xr-x 2 root root 4096 Apr 21 10:38 jdcal-1.4.1.dist-info
drwxr-xr-x 3 root root 4096 Apr 21 10:38 et_xmlfile
drwxr-xr-x 2 root root 4096 Apr 21 10:38 et_xmlfile-1.0.1-py2.7.egg-info
drwxr-xr-x 20 root root 4096 Apr 21 10:38 openpyxl
drwxr-xr-x 2 root root 4096 Apr 21 10:38 openpyxl-2.6.4-py2.7.egg-info
我们将发现openpyxl
及其依赖项jdcal
,et_xmlfile
所以我按顺序zip -qr openpyxl-2.6.4.zip jdcal.py jdcal.pyc et_xmlfile openpyxl
压缩文件
然后将此文件上传到未连接的计算机以供以下人员使用:
>>> import os,sys
>>> sys.path.insert(0,'/root/openpyxl-2.6.4.zip')
>>> import openpyxl
成功。
答案 4 :(得分:0)
我不确定这是否是OP所需要的,但是如果您必须在python中操作数据而不安装任何模块(仅是标准库),则可以尝试sqlite3模块,它当然可以让您进行交互使用sqlite文件(关系数据库管理系统)。
这些数据库在概念上类似于Excel文件。如果一个excel文件基本上是一个工作表集合,并且每个工作表都是可以放置数据的矩阵,则sqlite数据库是相同的(但每个“矩阵”都称为表格)。
这种格式对脚本友好,因为您可以使用SQL读取和写入数据,但是它不遵循其他DBMS所基于的客户端-服务器模型。整个数据库包含在一个文件中,您可以通过电子邮件将其发送给同事,还可以安装一个GUI,该GUI为您提供类似于电子表格的界面,从而使其更加用户友好(SQLite的DB浏览器可用于Windows,Linux和Mac)。
这允许您将SQL代码包含在python脚本中,从而增加了许多数据处理功能,这是一种实现简单程序数据持久性的绝妙方法。