通过Excel生成Markdown表格

表格比较少的话,使用在线工具(https://tool.lu/tables/)生成表格,比使用Markdown语法手动输入要轻松一些。

而对于大量的表格,如果能够采用Excel导入后自动生成Markdown则会减少大量的工作量。在网上找到了一篇教程,转载如下:


目前编辑器不支持表格,以往是通过截图,呈现的效果并不好,Markdown支持html,所以我们可以用html来写表格。但是……用html写表格,实在太麻烦了,这里有个简单的转换方法,供大家参考:

举例,假设有这样一个表格,内容如下:

时间 地点 人物
3月5日 北京 姚明
3月7日 上海 韩寒

处理方法如下:

  1. 从word或excel中复制表格
  2. 打开http://pressbin.com/tools/excel_to_html_table/index.html
  3. 贴上复制的文字,然后按convert,就会得到这个表格的代码

简要说明表格设定如下:

  1. 将第一个 <table>变成<table class="table table-bordered table-striped table-condensed">。为什么要加它们呢?这三个是什么意思呢?解释如下:它们都会给表格带上某种样式,如果没有的话,比较不好看:table-bordered:带圆角边框和竖线;table-striped:奇偶行颜色不同;table-condensed:压缩行距。以上三个可以进行不同的组合,如果是很长的表格,建议只用后两个。
  2. 另外,如果需要表头跟内容不一样,可以将<td>表头内容</td>换成<th>表头内容</th>
  3. 如果表格内文需要换行,可以在要换行的内容后加入<br>,后面的内容就会跑到下一行。
  4. 如果内文中有代码,需要特别显示,可使用:<code>代码</code>
  5. 如果表格中有需要设为斜体的内容,可使用:<I>要设为斜体的内容</I>
  6. 如果有跨行或者跨列的单元格,可用<th colspan="跨列数">内容</th>。跨行则是用rowspan="跨行数"
  7. 如果要调整某一列的宽度,可使用:<th width="宽度值或百分比">表头内容</th>
  8. 如果要调整整个表格的宽度,可以参考berlinix的这篇文章:http://www.ituring.com.cn/article/details/8367
  9. 如果大家对此感兴趣,这里有一个进阶资料:http://twitter.github.com/bootstrap/base-css.html#tables

以上引用自:Markdown之表格的处理
原文链接:https://www.ituring.com.cn/article/3452

改进:
按照上述方法复制表格后,所得到的表格是放置在整个页面内的。比如我的博客分为两栏布局,有一个博客栏和一个侧边栏。按照上述方法粘贴表格后,由于表格太宽,所以占据了整个页面,而且失去了响应式布局的功能。

所以需要将复制的表格放在<div>表格</div>内,并且设置内容自动分行<div style="margin-left:auto;margin-right:auto;word-break:break-all;">表格</div>。调整的时候发现分行是优先将左侧的列进行分行,所以最后得到的最右侧列可能是最宽的。为了控制某些不宜分行显示的内容,可以在相应的表头使用nowrap来取消分行,如下:

<tr>
      <th nowrap>Name</th>
      <th nowrap>Molecular formula</th>
      <th nowrap>Risk level </th>
      <th nowrap>For whom </th>
      <th>Notes</th>
   </tr>

因为notes是否分行对影响不大,所以选择其余列不分行,而notes分行的格式。同理,如果列数过多,某些列可能需要适当分行,那么应该可以限制该列的宽度,这一方法未进行测试。


2021-06-30更新:
这个网站(https://tool.lu/tables/)也可以复制excel表格内容后直接粘贴。并且生成的表格使用的是markdown语法,而不是html语法,相比后面介绍的方法,不需要将表格放在div内并设置自动分行。