您的位置:首页 > 编程语言 > Java开发

Java 读取excel指定行列数据以及将数据保存到txt文件中

2017-04-25 20:49 971 查看
在使用的软件中经常要用到一些数据的导入导出,以及准确的定位数据,这些经常会涉及excle表格,因此把今天学习到的关于如何利用Java准确获取到excle中的某一列数据,同时将此列数据输出到txt文件格式中。

使用的jar包:jxl.jar 

相关的API:http://jxl.sourceforge.net/javadoc/index.html(还是比较强大的,感兴趣的可以学一下)

1.首先是测试用的excle



2.要求:可以获取到第一列或者第二列有效数据,即“人物”、“年龄”等标题字符滤去。

jxl的用法在网上有很多,要获取到全部信息很简单,只需要嵌套两个for循环遍历excel中的每一个元素。

下面来获取第二列的年龄,只获取数字,代码如下:

public static void readSpecify(File file)throws Exception{
ArrayList<String> columnList = new ArrayList<String>();
Workbook readwb = null;
InputStream io = new FileInputStream(file.getAbsoluteFile());
readwb = Workbook.getWorkbook(io);
Sheet readsheet = readwb.getSheet(0);
int rsRows = readsheet.getRows();
int rsColumns = readsheet.getColumns();
for (int i = 1; i < rsRows; i++) {
Cell cell = readsheet.getCell(1, i);
columnList.add(cell.getContents());
System.out.println(columnList);
}
String[] ageString = new String[columnList.size()];
int[] age = new int[ageString.length];
for (int i = 0; i < columnList.size(); i++) {
ageString[i] = columnList.get(i);
age[i] = Integer.parseInt(ageString[i]);
System.out.println(age[i]);
}
}
这段代码需要注意的地方是,在第一个for循环中,这里并没有全部遍历元素,因为我们明确的知道,需要获取的是第二列第二行的元素一直到最后一行的元素,所以,for循环里的 i = 1 是代表从第二列开始,readsheet.getCell(1,i)里的1则表示从第二行开始。这种方式的优点在于能够快速准确的获取到值,缺点在于必须得确定起始位置,因为excel的行跟列都是从0开始的。同时cell.getContents返回值类型为java.lang.string,所以需要根据具体的数据类型进行转换。

效果如下:



3.要求:将excle文件中需要的行列数据导出到另一个excel或者txt文本中。

具体到这个例子,将第二列数据导出到excel和txt文件中,存储位置为当期文件夹,代码如下:

public static void copy_excel(File file) throws Exception {
FileWriter fWriter = null;
PrintWriter out = null;
String fliename = file.getName().replace(".xls", "");
fWriter = new FileWriter(file.getParent() + "/" + fliename + ".txt");//输出格式为.txt
fWriter = new FileWriter(file.getParent()+ "/agetwo.xls");//输出格式为.xls
out = new PrintWriter(fWriter);
InputStream is = new FileInputStream(file.getAbsoluteFile());
Workbook wb = null;
wb = Workbook.getWorkbook(is);
int sheet_size = wb.getNumberOfSheets();
Sheet sheet = wb.getSheet(0);
for (int j = 1; j < sheet.getRows(); j++) {
String cellinfo = sheet.getCell(1, j).getContents();//读取的是第二列数据,没有标题,标题起始位置在for循环中定义
out.println(cellinfo);
}
out.close();//关闭流
fWriter.close();
out.flush();//刷新缓存
System.out.println("输出完成!");
}
这段代码同样需要注意具体到行列,输出的文本名称可以自定义设置,这里取和原文件相同名字。但是要注意,out.println()一次只能写入一个文本,所以要确定写入的是txt还是excel,否则会出现文本生成了,但是却是空文本的情况。

效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java excel
相关文章推荐