统计top500的过程总结(perl,shell,java)【3-java】

这篇博客讲述了在shell脚本中如何调用java程序处理perl生成的、含有无法识别汉字URL的excel文件。由于perl生成的excel编码问题,作者选择了使用java的jxl库而非poi来读写文件,因为poi在处理时会遇到错误。文中还提供了java中将utf8解码和读写excel的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、java相关

     这里shell程序调用java程序的原因是:perl脚本生成的excel文件,其中的词条URL无法解码为人可以识别的汉字(与linux系统编码相关的,不能改系统编码,所以要用java程序处理一下perl生成的excel)。例如将http://www.hudong.com/wiki/%E5%8D%95%E6%9B%B2%E5%BE%AA%E7%8E%AF%E7%97%87解码为http:www.hudong.com/wiki/单曲循环症 保存到新的excel中。

    关于java读写excel的基本操作,可参考jxl导出Excel最全面的解释

    java读写excel文件有两种方式:一种是org.apache.poi方法,一种是jxl方法(要导入一个jar包:jxl.jar)。开始我用的poi的方式,但是该方法处理原始excel文件总报错:

java.lang.RuntimeException: Unexpected record type (org.apache.poi.hssf.record.HyperlinkRecord)
at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.<init>(RowRecordsAggregate.java:98)
at org.apache.poi.hssf.model.Sheet.<init>(Sheet.java:203)
at org.apache.poi.hssf.model.Sheet.createSheet(Sheet.java:158)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:287)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:201)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:317)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:298)
at com.hudong.test.TestPoi.read(TestPoi.java:105)
at com.hudong.test.TestPoi.read(TestPoi.java:79)
at com.hudong.test.TestPoi.main(TestPoi.java:36)

   解决该问题的方法是打开excel文件,随便点两下关闭的时候选择保存,问题就解决了。但是服务器上的excel没人让你每次去点两下,所以改选用jxl方式来处理perl生成的excel文件。


1、utf8解码为可识别的汉字的方法(java):

String temp = http://www.hudong.com/wiki/%E5%8D%95%E6%9B%B2%E5%BE%AA%E7%8E%AF%E7%97%87
temp = URLDecoder.decode(temp,"utf-8");

编码的方法为URLEncoder.encode();


2、java读写excel文件:(已上传资源,可下载,在我的资源里面)

   DecodeExcelJXL.java

   通过args[]直接获得shell脚本传过来的参数。

 public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException{
//      根据是否有参数,取得待处理excel表格
        if (args != null && args.length == 1) {
            filePath=args[0];
        }
        rewriteWithNew(filePath);
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值