把Excel中的数据导出成txt文件的注意问题
2017-04-25 13:33
411 查看
一、问题描述:
今天,我把Excel中的数据导成txt文件后,用Java读取这个txt文件中的内容时,发现读到到数据多了空白行(即列数增加了一倍),并且每一行的数据之间是以制表符(即和按下tab键的效果一样或像Java中的“\t”)的间隔分割。
二、实验重现:
Excel中的数据如下:
把它导出后的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”)间隔。
今天,我把Excel中的数据导成txt文件后,用Java读取这个txt文件中的内容时,发现读到到数据多了空白行(即列数增加了一倍),并且每一行的数据之间是以制表符(即和按下tab键的效果一样或像Java中的“\t”)的间隔分割。
二、实验重现:
Excel中的数据如下:
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 |
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”)间隔。
相关文章推荐
- Sql存储查询数据导出Excel文件(注意:有几百万条数据)
- mysql 导入导出Excel、txt文件数据
- 大量数据导出为Excel文件的问题解决
- asp.net<Web版> ---GridView 数据导出到excel表,系列问题<一>---导出的Excel文件格式与文件扩展名指定的格式不一致
- asp.net从数据库导出数据到word、excel、txt文本文件
- ajax 导出文件( Excel, txt 等) 问题分析
- nginx +phpfastcgi 环境下 导出excel文件,超时,数据被截断问题,解决
- SQL 数据的导入导出,对远程(MSsql,OracleAccess,)数据库的操作以及读取Excel,txt文件中的数据
- Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
- SQL Server表中数据导出为多个Excel文件和TXT文件
- 数据导出成Excel文件,关于字符集的问题
- asp.net从数据库导出数据到word、excel、txt文本文件
- jqgrid实现客户端导出Excel、txt、word、json等数据格式的文件
- ajax 导出文件( Excel, txt 等) 问题分析
- 使用poi将数据导出为excel文件的几点注意
- ajax 导出文件( Excel, txt 等) 问题分析
- [原创]大量数据导出为Excel文件的问题解决(C#,ASP.NET)
- asp.net从数据库导出数据到word、excel、txt文本文件
- asp.net从数据库导出数据到word、excel、txt文本文件
- php导出excel 大数据 时候需要注意的问题