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