如何仅使用python标准库创建excel文件?

Z.L*_*Lun 4 python excel

我是 Python 的新手。

我使用腻子来管理一些服务器。我想使用Python在每个服务器上创建一个Excel文件,为此我想如果我可以使用一些命令ssh ip "python abc.py"来创建文件。可以编写一个 bash 脚本来管理所有服务器。这是我遇到的麻烦:

服务器不能使用互联网。

并且不允许使用任何第三方库。当安装了 linux(redhat 6.5) 时,python 中有没有可以立即创建 Excel 的库?请帮帮我,谢谢。

Rax*_*axl 8

其实是有办法的。如果您有一个空的 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
Run Code Online (Sandbox Code Playgroud)

在这个文件上,我有两张与工作簿上的选项卡进行比较的工作表。

xl 目录中的 workbook.xml 包含工作表的名称,如下所示:

<sheets><sheet name="Test1" sheetId="1" r:id="rId1"/><sheet name="Test2" sheetId="2" r:id="rId2"/></sheets>
Run Code Online (Sandbox Code Playgroud)

和每个工作表(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>
Run Code Online (Sandbox Code Playgroud)

因此,如果您可以正确使用标签修改 xml 文件,则只需使用文本编辑器和压缩程序即可更改或创建 excel 工作表


jla*_*rcy 6

不幸的是,这是不可能的。创建 Excel 文件可能需要在客户端运行两个部分:

  • 已安装 Office Excel(如果支持 Open XML 格式可以放宽);
  • 适用于 Excel 的 Python 包装器,例如xrldopenpyxls

Python 标准库不包括 Office 产品的包装器。相反,它们为逗号分隔值文件提供商品,这些文件可以用 Excel 轻松读取。

Openpyxl 项目使用Open XML 格式,因此无需安装 Office。引用其文档:

Openpyxl 是一个 Python 库,用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。

它诞生于缺乏现有的库来从 Python 本地读取/写入 Office Open XML 格式。

然后你只需要用这个包更新你的 Python 设置就可以创建电子表格。

如果您的服务器无法访问互联网但接受挂载外部媒体,那么您可以在另一台机器上下载并将其存储在可移动媒体上,将媒体挂载到您的服务器上,然后解压并使用pythonsetup.py接口安装:

tar -xvzf openpyxl.tar.gz /somepath
cd /somepath/to/installer
python setup.py install
Run Code Online (Sandbox Code Playgroud)

它适用于 Debian(未安装 office,使用 pipy 源):

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> wb.save('test.xlsx')
Run Code Online (Sandbox Code Playgroud)

生成 Excel 可读的空电子表格。


小智 0

如果您还没有尝试过,请尝试 CSV。

https://docs.python.org/2/library/csv.html