如何格式化 HTML 文件以在 Excel 中获取定义的名称(从 Web 浏览器复制粘贴)?

Posted

技术标签:

【中文标题】如何格式化 HTML 文件以在 Excel 中获取定义的名称(从 Web 浏览器复制粘贴)?【英文标题】:How to format HTML files to get defined names in Excel (copy-paste from web browser)? 【发布时间】:2020-03-18 15:59:54 【问题描述】:

在工作中,我负责开发一些基本的 Python 脚本,将结果导出到文本文件中。然后将文本文件导入我同事熟悉的 Excel 电子表格中。

我意识到这些 Python 脚本可以轻松地生成带有 <table> 元素的 .html 文件,而不是 .dat 文本文件。这些 html 文件可以使用 Internet 浏览器打开,然后使用复制/粘贴导出到新的 Excel 电子表格中。

不知何故,使用标签<a name=Defined_name></a>Value 会导致将提供“Value”的单元格引用为“Defined_name”。我看到了在导入 .html 网页时直接创建已定义名称的升级机会。

以下是 .html 文件的基本示例,该文件可在 Excel(2007 年及以上)中生成已定义的名称:

<table>
   <tbody> <!-- Corps du tableau -->
       <tr>
           <td><A name=Nom_1></A>Carmen</td>
           <td><A name=Age_1></A>33 ans</td>
           <td><A name=Pays_1></A>Espagne</td>
       </tr>
       <tr>
           <td><A name=Nom_2></A>Michelle</a></td>
           <td><A name=Age_2></A>26 ans</td>
           <td><A name=Pays_2></A>États-Unis</td>
       </tr>
       <tr>
           <td><A name=Nom_3></A>François</td>
           <td><A name=Age_3></A>43 ans</td>
           <td><A name=Pays_3></A>France</td></A>
       </tr>
       <tr>
           <td><A name=Nom_4></A>Martine</td>
           <td><A name=Age_4></A>34 ans</td>
           <td><A name=Pays_4></A>France</td>
       </tr>
       <tr>
           <td><A name=Nom_5></A>Jonathan</td>
           <td><A name=Age_5></A>13 ans</td>
           <td><A name=Pays_5></A>Australie</td>
       </tr>
       <tr>
           <td><A name=Nom_6></A>Xu</td>
           <td><A name=Age_6></A>19 ans</td>
           <td><A name=Pays_6></A>Chine</td>
       </tr>
   </tbody>
</table>

我正在寻找一种方法来为一系列单元格(行、列或数组)定义名称。我唯一可以参考的是单个单元格。

感谢您的帮助。

【问题讨论】:

为什么不用python只创建一个excel文件? 这样会更好,但我不知道如何格式化 excel 文件。当我在 NP++ 上打开它时,它完全搞砸了。我想我不能像在 Python 上写一个 .txt 文件那样写一个 .xlsx 文件 您能否发布创建文本文件的代码(仅相关部分)。 嗯,这只是基本的东西,使用类似 : with open(out_file, 'w') as f: f.write(line) 对不起,我的意思是数据行是如何创建的,它们是否在循环中? 【参考方案1】:

使用openpyxl,您可以使用 python 创建工作簿

import openpyxl

# create a workbook
wb = openpyxl.Workbook()
ws = wb.worksheets[0]

# define a named range
dn = openpyxl.workbook.defined_name
rng = dn.DefinedName('data', attr_text='Sheet!$A$1:$J$10')
wb.defined_names.append(rng)

# add some data
for r in range(1,11):
  for c in range (1,11):
     ws.cell(r,c).value = r + (c-1)*10

wb.save("myworkbook.xlsx")
print("workbook created")

【讨论】:

以上是关于如何格式化 HTML 文件以在 Excel 中获取定义的名称(从 Web 浏览器复制粘贴)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 RTF 文本复制到剪贴板以在 excel 中使用

BigQuery:加载 excel 文件

如何修改函数以在 HTML onclick 中播放声音?

如何将包含数百张工作表的 excel 文件导入数据库以在 C# 项目中使用?

如何将HTML给转换成Excel格式了给转换成Excel格式

如何按顺序批量打印PDF\WORD\EXCEL格式的文件 混合打印500多个文件?