Chinaunix

标题: perl 读excel单元格中长字符问题 [打印本页]

作者: Oo慢慢来oO    时间: 2011-09-28 11:00
标题: perl 读excel单元格中长字符问题
本帖最后由 Oo慢慢来oO 于 2011-09-29 17:46 编辑

需求:有一个excel单元格有1200个字符用perl读出来
问题:perl读excel单元格只能读1008个字符后面的读不出来
其他:在当前目录新建一个test.xls第一个单元格放一个超过1008的字符窜
代码如下:

  1. use strict;
  2. use Cwd;
  3. use Win32::OLE qw(in with);
  4. use Win32::OLE::Const 'Microsoft Excel';


  5. my $EXCEL = '';
  6. my $BOOK = '';
  7. my $SHEET = '';
  8. my $dir = getcwd;
  9. my $dir = $dir.'\\test.xls';


  10. sub initExcel()
  11. {
  12.   $EXCEL = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
  13.   $EXCEL->{DisplayAlerts} = 'False';
  14.   $BOOK = $EXCEL->Workbooks->Open("$dir");
  15.   $SHEET = $BOOK->Worksheets(1);
  16. }


  17. sub closeExcel
  18. {
  19.         $BOOK->close();
  20.         $EXCEL->quit();
  21. }

  22. sub main
  23. {       
  24.         initExcel();
  25.         my $tmp = $SHEET->Cells(1,1)->{Text};
  26.         print $tmp;
  27.         closeExcel();
  28. }
  29. main();
复制代码
test.zip (1.74 KB, 下载次数: 15)

修改后代码:
  1. use strict;
  2. use Cwd;
  3. use Spreadsheet::ParseExcel;

  4. my $EXCEL = '';
  5. my $SHEET = '';
  6. my $dir = getcwd;
  7. my $dir = $dir.'\\test.xls';


  8. sub initExcel()
  9. {
  10.          $EXCEL = Spreadsheet::ParseExcel::Workbook->Parse($dir);
  11.          $SHEET = $EXCEL->{Worksheet}[0];

  12. }

  13. sub main
  14. {       
  15.         initExcel();
  16.         my $cell = $SHEET->{Cells}[2][0]->{Val};
  17.         print "$cell\n";
  18. }
  19. main();
复制代码
谢谢各位
作者: py    时间: 2011-09-28 13:49
回复 1# Oo慢慢来oO
  1. use Spreadsheet::ParseExcel;
复制代码

作者: Oo慢慢来oO    时间: 2011-09-29 12:24
回复 2# py


    加了以后能显示1040个字符,但还是不够。
作者: iamlimeng    时间: 2011-09-29 12:58
  1. #!/usr/bin/perl

  2. use strict;
  3. use Spreadsheet::ParseExcel;

  4. my $file = 'test.xls';
  5. my $xls = Spreadsheet::ParseExcel::Workbook->Parse($file);
  6. my $cell = ${$xls->{Worksheet}}[0]->get_cell(0,0)->value();
  7. print "$cell\n",length($cell);
复制代码
我把内容增加一倍长度,依然能正确读取。
作者: Oo慢慢来oO    时间: 2011-09-29 17:42
我把内容增加一倍长度,依然能正确读取。
iamlimeng 发表于 2011-09-29 12:58



    没问题了。我对perl模块还不是很了解,把2楼给的代码{use ……;}直接粘贴进去,内容没改,故还是读一部分。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2