免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4899 | 回复: 13
打印 上一主题 下一主题

[文本处理] Shell中能把数据写入xls对应单元格吗? [复制链接]

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-05 10:13 |只看该作者 |倒序浏览
有一个文本文件是这样的
A1        B1        C1
A2        B2        C2
A2        B3        C3
还有一个空的my.xls文件,
我想把A1写到xls的单元格A1,A2写到单元格A2...
可以办到吗?还是要通过csv来中转?求大概代码,
多谢,否则我要手动操作好几千行。

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
2 [报告]
发表于 2014-03-05 10:21 |只看该作者
回复 1# Herowinter


    不能。。。
   两个方法:
   1、直接生成xls后缀,tab键分隔,win下可以用excel直接打开
   2、使用perl等其它程序可以直接把文本转成excel

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-03-05 10:21 |只看该作者
回复 1# Herowinter


    shell不能直接操作excel文件, 需要用文件中转, 先保存为文本再导进excel吧

论坛徽章:
3
摩羯座
日期:2014-03-05 14:58:52巨蟹座
日期:2014-04-03 15:14:32摩羯座
日期:2014-04-24 12:50:34
4 [报告]
发表于 2014-03-05 10:23 |只看该作者
回复 1# Herowinter


    可以考虑下python的xlrd。https://pypi.python.org/pypi/xlrd

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-03-05 10:39 |只看该作者
存在 csv 就可以了. excel 可以直接打开的.

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
6 [报告]
发表于 2014-03-05 10:45 |只看该作者
  1. #!/usr/bin/env python
  2. import xlwt
  3. wbk = xlwt.Workbook()
  4. sheet = wbk.add_sheet('test')
  5. row = 0
  6. f = open('txt','r')
  7. for line in f:
  8.     L = line.split()
  9.     sheet.write(row,0,L[0])
  10.     sheet.write(row,1,L[1])
  11.     sheet.write(row,2,L[2])
  12.     row += 1
  13. wbk.save('my.xls')
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
7 [报告]
发表于 2014-03-05 10:52 |只看该作者
@huang6894@关阴月飞@jackhuntcn@q1208c@HH106
多谢了,因为那个文本文件是我自己awk生成的,
我可以让输出规范一点,保存为csv。
然后导入excel,进行少量的编辑后另存为xls,目前
我打算这么做的,试了下一个小例子好像可以。
另外,多谢楼上的python脚本,非常感谢,原来
python处理这个非常方便。

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
8 [报告]
发表于 2014-03-05 10:55 |只看该作者
回复 6# HH106


    有个问题,如果遇到多行多列以及中文。。怎么破?

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
9 [报告]
发表于 2014-03-05 10:56 |只看该作者
本帖最后由 huang6894 于 2014-03-05 11:12 编辑

回复 7# Herowinter

try~
  1. => cat txt2xls.pl
  2. #!/usr/bin/perl -w
  3.   use Encode(qw(decode));
  4.   use strict;
  5.   use Spreadsheet::WriteExcel;
  6.   my $file=$ARGV[0];
  7.   my $out=$ARGV[1];
  8.     open (TXT,"$file") or die "$file: $!";
  9.     my $workbook  = Spreadsheet::WriteExcel->new("$out");
  10.     my $worksheet = $workbook->add_worksheet();
  11.     my $row = 0;
  12.     while (<TXT>) {
  13.     chomp;
  14.     # Split on tab
  15.     my @Fld = split('\t', $_);
  16.     my $col = 0;
  17.     foreach my $token (@Fld) {
  18.     $worksheet->write_string($row, $col, decode('gb2312',$token));
  19.     $col++;                         }
  20.     $row++;
  21.     }
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
10 [报告]
发表于 2014-03-05 11:01 |只看该作者
回复 9# huang6894
多谢,对于我来说,我处理的文本不会出现中文字符,
另外,因为文本文件是我自己处理得到的,我在awk
程序输出前把记录中的‘\n’替换成空格了,然后得到一个
很长的字符串,导入后我手动调整一下排版就可以了。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP