您的位置:首页 > 其它

把Excel中的数据导出成txt文件的注意问题

2017-04-25 13:33 411 查看
一、问题描述:

今天,我把Excel中的数据导成txt文件后,用Java读取这个txt文件中的内容时,发现读到到数据多了空白行(即列数增加了一倍),并且每一行的数据之间是以制表符(即和按下tab键的效果一样或像Java中的“\t”)的间隔分割。

二、实验重现:

Excel中的数据如下:

1aA
2bB
3aA
4bB
5aA
6bB
7aA
8bB
9aA
10bB
把它导出后的txt文件如下:
1 a
A

2 b B

3 a A

4 b B

5 a A

6 b B

7 a A

8 b B

9 a A

10 b B

用Java来读取这个txt文件中的内容,且把读取到的每一行一""分割统计每行的字符个数代码如下所示:

package DemoExcel;

import java.io.*;

public class DemoReadAndWrite {
public static void main(String[] args) throws IOException {

test();
}

public static void test() throws IOException {

BufferedReader bfr = new BufferedReader(
new FileReader(
"C://Users//Administrator//Desktop//ExcelTest//afterTranslate.txt"));

String flag = null;
//用于统计行数
int count = 0;
while ((flag = bfr.readLine()) != null) {
//把读取到的一行字符串打印出来
System.out.println(flag);
//以""切割每一行的字符串,打印出分割后字符串的个数
System.out.println(flag.split("").length);
count++;
}
//把txt中的行数打印出来
System.out.println("count=" + count);
}

}

输出的结果为:



三、问题分析:


制表符相当于键盘上按下TAB键之间的距离,也称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。就是说只是在字符常量和字符串常量中是代表一定的距离(比如8个空格),而在其它地方只是代表一个间隔,不代表固定大小的空白距离。

在把Excel中的数据导成txt格式时,它是以制表符(即按下一个tab键的效果或像Java中的“\t”)分割,并且是以Unicode编码存储的;如下图所示:





四、问题的解决方法:

方法一:

出现这种情况,可以从字符编码入手解决,把txt的Unicode字符编码改成Utf-8字符编码,问题得到了解决(注意:此时,txt文件中的每一行是以制表符(即和按下tab键的效果一样或像Java中的“\t”)间隔)。







方法二:

直接在Excel中就把数据全部以“ ”(空格)间隔后,存储到一列单元格中(方法可以看我之前的博客文章,博客地址为:http://blog.csdn.net/g_66_hero/article/details/70568368),在导出成txt格式,这样就是以"
"(及一个空格)为间隔的数据了,同样的,需要把Unicode 编码转换成UTF-8编码之后,才能用Java来正确的读取txt文件内容。

方法三:

在Excel中,直接选中需要的数据,然后直接复制,创建一个txt文件,把刚刚复制的内容直接粘贴到txt文件中,这样,这个txt文件就不用再去转成UTF-8编码了,直接用Java去读取就可以了(和上面方法一和方法二转换完编码后的效果一样),但是要注意,此时txt文件中的每一行是以制表符(即和按下tab键的效果一样或像Java中的“\t”)间隔。

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