通过java将txt文件中的调查问卷数据导入excel

好基友做调查问卷,已经把结果统计到了word里面,需要将数据导入excel里,其实应该有比较方便的方法(比如从excel里直接导入什么的),但是我查了查,txt可以直接导入到excel里,但所需的格式跟她已经整理出来的格式差别比较大,所以不易直接导。除写程序之外的其他方法我就不知道了...而且她调查问卷上有对某物排序的问题(比如说让问卷填写者按出行方式频率排序,a公交车b出租车c私家车d步行e非机动车),因为要统计最后各出行方式所占的权值并做这几个出行方式的排序,excel中需要把顺序转换成分数来存储。

不过我现在写的这个程序由于比较应急,没有好好考虑程序的扩展性和精简性,有些东西都是硬编码进去的,而且能设成数组的却拆开成为了好几个变量,而且可能有的地方绕弯了,使用了更麻烦的方法...明年考研完毕之后重新改进一下,争取为以后可能的需求带来更大的方便吧~

word中每个人的调查结果是这样一个表现形式,我把它复制到txt里了:

被访者个人情况
年龄:XX
受教育程度:XX
性别:XX
工作类型:XX
您来自于哪里:XX
顺序:a-c-e-b-d

通过这个表现形式可以建一个类。这里最后一项我觉得是可以存成数组的,不过当时写的时候直接用了5个属性来存了。从这个形式可以看出信息还是比较好提取的,可以用readline()提取每一行,然后分别提取需要的数据存到一个List里,再用java打开excel文件,遍历List文件中的数据存到excel里。

提取信息存到List里这部分就不多解释了,无非就是字符串分割之类的东西。不过这里要说一下从顺序到分数的转换(不过感觉这个思路可能不是最简单的)。先用split函数将顺序分割成数组:temp[5] = {a,c,e,b,d};,a、b、c、d、e所对应的权值应该是5、2、4、1、3。temp[0]的值是a,也就是说a的值为5-0=5;temp[1]的值为c,也就是说c的权值为5-1=4……这样就得出了abcde所对应的权值5-i,然后存进去就可以了~

下面说说java操纵excel。首先需要下个jxl.jar包然后导进去,这样就可以使用里面封装的东东了~非常方便。由于好基友已经创建好excel文件了,所以这里实现的是文件的修改(网上好多例子都是只有读or只有写的,与修改的代码稍稍有些不一样)

InputStream is = new FileInputStream(filePath1);
Workbook wb = Workbook.getWorkbook(is);
WritableWorkbook book = Workbook.createWorkbook(new File(filePath2), wb);

filePath1是源文件,filePath2存放处理过后的文件,相当于建立了一个源文件的副本,在这个副本之上进行改动然后保存修改后的表。

【论建立副本的重要性:处理过程中只要出一个bug,整个excel表就不见了!!!!!!】

WritableSheet st = book.getSheet(0);

这句获取具体的sheet,sheet是从0开始编号的~

然后我写了个for循环遍历list,将对应的信息存入对应位置。

st.addCell(new Label(6, i, "" + info.getA1()));

这个不代表第7行第i+1列,而是第i+1行第7列!跟一般数组的规律不一样哈。我一开始写反了,结果发现存进去的数据整个倒过来了...

最后不要忘记写入&关闭

book.write();
book.close();
wb.close();
is.close();

写这篇文章其实主要目的是记录一下java操纵excel的简单方法,以后也许会用到~好了,我继续滚去复习了......


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值