![如何通过粗体文本将 Excel 表格拆分为 .doc 中的 CSV 文件?](https://linux22.com/image/120161/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E7%B2%97%E4%BD%93%E6%96%87%E6%9C%AC%E5%B0%86%20Excel%20%E8%A1%A8%E6%A0%BC%E6%8B%86%E5%88%86%E4%B8%BA%20.doc%20%E4%B8%AD%E7%9A%84%20CSV%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
您有 777 个 .doc 文件,其中每个 .doc 文件都包含一个大的 Excel 表,就像一个这里如图 1 所示。此处,仅考虑一个 .doc 文件。我想通过任何 Unix 编程语言和/或脚本将 .doc 文件的 Excel 表划分为 CSV 文件。我找不到将 Microsoft 文件格式处理为 CSV 文件的方法。伪代码:
- 从 .doc 文件中提取 Excel 表格,该文件在线程中展开如何通过任何 Unix 工具将许多 .doc 文本 + 表格元素提取到 CSV 中?
按规则将 Excel 表格(可能已在此处转换为 CSV)拆分为单独的 .CSV 文件:
新的粗体表示新表即一个新的 CSV 文件。
应用隐式列地点(底部/顶部)和日期(dd.mm.yyyy) 位于每个单独 CSV 文件的 .doc 文件的前两行中。使用时间专栏(早上/晚上/晚上)。
按规则定位目标文件及其列
- Assistants.csv - 姓名、日期、地点、时间
- 其他.Assistants.csv - 姓名、日期、地点、时间
- General.csv - 事件、日期、地点、时间
图 1 .doc 文件中的 Excel 表格示例
操作系统:Linux Debian Stretch 9 等
数据:.odt 文件这里
答案1
好的...
开始迷你教程
因此,这里有一些关于生成 postgresql 数据库以导入每日报告的提示。
首先,如果你还没有安装 postgresql:
$sudo apt-get install postgresql
其次,如果您不熟悉 postgresql,Debian 中 postgresql 的默认安装设置为允许每个用户通过对等身份验证无需密码即可登录。但是,您必须创建一个由用户拥有的数据库。
以下是如何做到这一点:
- 进入特权 shell
$ sudo -s
- 成为 postgres 超级用户
#苏邮政
- 创建一个数据库供用户玩
postgres$ createb 数据库名 -O 用户
然后退出两次以返回用户态。
postgres$ 退出
#出口
$
- 您应该准备好开始使用 postgresql
我生成了一个 SQL 文件,可以导入该文件来制作表格。您可以将以下内容复制并粘贴到类似的内容中表.sql
CREATE TYPE shifts AS ENUM ('morning','evening','night');
CREATE TYPE titles AS ENUM ('assistant','other_assistant');
CREATE TABLE assistants (id integer, name char(20), title titles);
CREATE TABLE disposition (id integer, name char(20), shift shifts, day date, comments text);
CREATE TABLE schedule (id integer, name1 char(2), name2 char(20), name3 char(20), name4 char(20), name5 char(20), shift shifts, day date);
然后导入表:
psql
user=>\i tables.sql
如果您将每日报告解析为三个单独的 CSV 文件,则可以使用 \copy 命令将每个文件直接导入到每个单独的表中。
像这样的东西:
\copy assistants FROM '~/assistants.csv' WITH (FORMAT csv);
\copy dispositions FROM '~/dispositions.csv' WITH (FORMAT csv);
\copy schedule FROM '~/schedule.csv' WITH (FORMAT csv);
这将用数据填充您的表格,并允许您执行查询,例如找出今天谁发表了评论以及这些评论是什么......
像这样的东西:
select * from disposition where day = 'TODAY';
可能会产生以下输出:
id | name | shift | day | comments
----+----------------------+---------+------------+----------
| Vir | morning | 2017-10-23 | Peaceful
结束迷你教程
这些有帮助吗?还是我想得太深了或者只是让你感到困惑?