Chinaunix
标题:
Shell中能把数据写入xls对应单元格吗?
[打印本页]
作者:
Herowinter
时间:
2014-03-05 10:13
标题:
Shell中能把数据写入xls对应单元格吗?
有一个文本文件是这样的
A1 B1 C1
A2 B2 C2
A2 B3 C3
还有一个空的my.xls文件,
我想把A1写到xls的单元格A1,A2写到单元格A2...
可以办到吗?还是要通过csv来中转?求大概代码,
多谢,否则我要手动操作好几千行。
作者:
huang6894
时间:
2014-03-05 10:21
回复
1#
Herowinter
不能。。。
两个方法:
1、直接生成xls后缀,tab键分隔,win下可以用excel直接打开
2、使用perl等其它程序可以直接把文本转成excel
作者:
关阴月飞
时间:
2014-03-05 10:21
回复
1#
Herowinter
shell不能直接操作excel文件, 需要用文件中转, 先保存为文本再导进excel吧
作者:
jackhuntcn
时间:
2014-03-05 10:23
回复
1#
Herowinter
可以考虑下python的xlrd。
https://pypi.python.org/pypi/xlrd
作者:
q1208c
时间:
2014-03-05 10:39
存在 csv 就可以了. excel 可以直接打开的.
作者:
HH106
时间:
2014-03-05 10:45
#!/usr/bin/env python
import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('test')
row = 0
f = open('txt','r')
for line in f:
L = line.split()
sheet.write(row,0,L[0])
sheet.write(row,1,L[1])
sheet.write(row,2,L[2])
row += 1
wbk.save('my.xls')
复制代码
作者:
Herowinter
时间:
2014-03-05 10:52
@huang6894
@关阴月飞
@jackhuntcn
@q1208c
@HH106
多谢了,因为那个文本文件是我自己awk生成的,
我可以让输出规范一点,保存为csv。
然后导入excel,进行少量的编辑后另存为xls,目前
我打算这么做的,试了下一个小例子好像可以。
另外,多谢楼上的python脚本,非常感谢,原来
python处理这个非常方便。
作者:
huang6894
时间:
2014-03-05 10:55
回复
6#
HH106
有个问题,如果遇到多行多列以及中文。。怎么破?
作者:
huang6894
时间:
2014-03-05 10:56
本帖最后由 huang6894 于 2014-03-05 11:12 编辑
回复
7#
Herowinter
try~
=> cat txt2xls.pl
#!/usr/bin/perl -w
use Encode(qw(decode));
use strict;
use Spreadsheet::WriteExcel;
my $file=$ARGV[0];
my $out=$ARGV[1];
open (TXT,"$file") or die "$file: $!";
my $workbook = Spreadsheet::WriteExcel->new("$out");
my $worksheet = $workbook->add_worksheet();
my $row = 0;
while (<TXT>) {
chomp;
# Split on tab
my @Fld = split('\t', $_);
my $col = 0;
foreach my $token (@Fld) {
$worksheet->write_string($row, $col, decode('gb2312',$token));
$col++; }
$row++;
}
复制代码
作者:
Herowinter
时间:
2014-03-05 11:01
回复
9#
huang6894
多谢,对于我来说,我处理的文本不会出现中文字符,
另外,因为文本文件是我自己处理得到的,我在awk
程序输出前把记录中的‘\n’替换成空格了,然后得到一个
很长的字符串,导入后我手动调整一下排版就可以了。
作者:
HH106
时间:
2014-03-05 11:03
回复
8#
huang6894
1 中文的话,加上 coding:utf-8
2 多行多列不是很明白你的意思,我上面是列写死了的,改改判断下读取的分割列数,应该可以解决。
作者:
huang6894
时间:
2014-03-05 11:04
回复
11#
HH106
嘻嘻,谢谢,学习了
作者:
sohusina
时间:
2014-03-05 13:43
还一种办法,把数据先存到mysql之类的数据库里,再导出为excel。
作者:
Herowinter
时间:
2014-03-05 14:24
回复
13#
sohusina
多谢提供另外一种思路。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2