惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
G
Google Developers Blog
小众软件
小众软件
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
T
Tenable Blog
Vercel News
Vercel News
AWS News Blog
AWS News Blog
Forbes - Security
Forbes - Security
M
MIT News - Artificial intelligence
S
Security Affairs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hacker News - Newest:
Hacker News - Newest: "LLM"
美团技术团队
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
Last Week in AI
Last Week in AI
罗磊的独立博客
Project Zero
Project Zero
Cyberwarzone
Cyberwarzone
S
Schneier on Security
S
Secure Thoughts
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Y
Y Combinator Blog
F
Full Disclosure
N
Netflix TechBlog - Medium
博客园 - 叶小钗
A
Arctic Wolf
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
The Exploit Database - CXSecurity.com
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
C
Check Point Blog
C
CERT Recently Published Vulnerability Notes
www.infosecurity-magazine.com
www.infosecurity-magazine.com

博客园 - xiaoyixy

WeakHashMap相关 Java常见问题[转] MONO,原来你是水中月 Lucene 搜索引擎倒排索引原理 PXE Network Boot and Install Linux over NFS server 让进程在后台运行方法汇总 IBM terminology abstraction Perl Note(2) 亲爱的,我想念你 Perl命令行应用 深入PAM Perl Note(1) Shell技巧 GRUB awk学习 高手好习惯 Shell脚本 用户管理 re notes
用 Spreadsheet::ParseExcel处理中文excel文件
xiaoyixy · 2008-10-29 · via 博客园 - xiaoyixy

需要用的模块:
Spreadsheet::ParseExcel
Unicode::Map
IO-stringy
OLE-Storage_Lite

其中IO-stringy,OLE-Storage_Lite为运行的必要包
Spreadsheet::ParseExcel是解析Excel的必要程序
Unicode::Map为完全支持中文的字符集转换包

perldoc Spreadsheet::ParseExcel 介绍的很详细了
中文 excel 处理需要稍微多做一步
用 Spreadsheet::ParseExcel::FmtUnicode 指定 Unicode_Map 为 CP936

然后直接调用 Parse 方法就行了
返回值是一个关键数组 内容就是 excel 文件的内容

$oBook->{File} 是文件名
$oBook->{SheetCount} 是sheet个数
$oBook->{Worksheet}[0]->{Name} 是第一个 sheet 的名字
$oBook->{Worksheet}[1]->{MaxRow} 是第二个 sheet 的最大行
$oBook->{Worksheet}[2]->{Cells}[1][0]->{Val} 是第三个 sheet 的第二行第一列的值
$oBook->{Worksheet}[2]->{Cells}[1][0]->Value 是第三个 sheet 的第二行第一列的转化后的中文值

use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;

my $oExcel = new Spreadsheet::ParseExcel;
my $oCode = "CP936";
my $oFmtJ = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map => $oCode);
my $oBook = $oExcel->Parse($excelFile, $oFmtJ);

然后根据情况 循环sheet 行/row 列/column 处理就行了.

#==================================================

Demo

#!/usr/bin/perl -w

use strict;

use Spreadsheet::ParseExcel;

use Spreadsheet::ParseExcel::FmtUnicode;

use Encode qw /from_to/;

my $oExcel = new Spreadsheet::ParseExcel;

die "You must provide a filename to $0 to be parsed as an Excel file"

  unless @ARGV;

#set for charactor

my $oFmtC = Spreadsheet::ParseExcel::FmtUnicode->new( Unicode_Map => "CP936" );

my $oBook = $oExcel->Parse( $ARGV[0], $oFmtC );

my ( $iR, $iC, $oWkS, $oWkC );

print "FILE :",  $oBook->{File},       "\n";

print "COUNT :", $oBook->{SheetCount}, "\n";

print "AUTHOR:", $oBook->{Author},     "\n"

  if defined $oBook->{Author};

for ( my $iSheet = 0 ; $iSheet < $oBook->{SheetCount} ; $iSheet++ )

{

$oWkS = $oBook->{Worksheet}[$iSheet];

print "--------- SHEET:", $oWkS->{Name}, "\n";

for ( my $iR = $oWkS->{MinRow} ;

 defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;

 $iR++ )

{

for ( my $iC = $oWkS->{MinCol} ;

 defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;

 $iC++ )

{

$oWkC = $oWkS->{Cells}[$iR][$iC];

my $val = $oWkC->Value;

$val =~ s/\s+//ig;

from_to( $val, "CP936", "utf8" );

#print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);

print "( $iR , $iC ) =>", $val, "\n" if ($oWkC);

}

}

}