社区
Java EE
帖子详情
jxl读取excel生成txt文件
rightxiang
2011-10-13 07:57:33
现在需要做个需求就是 用jxl读取excel文件里所需的单元格信息生成txt文件 但不是全部读取 只读取所需的单元格信息 并且有的单元格还是合并的单元格 这么弄啊 弄了一天了 也没找到 请大家指点指点 thank you !!!!
...全文
254
17
打赏
收藏
jxl读取excel生成txt文件
现在需要做个需求就是 用jxl读取excel文件里所需的单元格信息生成txt文件 但不是全部读取 只读取所需的单元格信息 并且有的单元格还是合并的单元格 这么弄啊 弄了一天了 也没找到 请大家指点指点 thank you !!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rightxiang
2011-10-14
打赏
举报
回复
[Quote=引用 15 楼 fuwenhai 的回复:]
先用jxl包把数据读出来啊,然后将读出的数据利用IO流写到txt文件中
//根据路径创建File对象
File file = new File(filePath);
//根据选择的Excel文件创建Workbook对象
Workbook book = Workbook.getWorkbook(file);
……
[/Quote]
现在的要求整个excel都读出来 只读取需要的单元格 并且还是合并的单元格 这么搞啊
luyun2011
2011-10-14
打赏
举报
回复
先用jxl包把数据读出来啊,然后将读出的数据利用IO流写到txt文件中
//根据路径创建File对象
File file = new File(filePath);
//根据选择的Excel文件创建Workbook对象
Workbook book = Workbook.getWorkbook(file);
//取得第一张sheet表
Sheet sheet = book.getSheet(0);
//总行数
int rows=sheet.getRows();
//总列数
int cols=sheet.getColumns();
//读取每行每列
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
String content1=sheet.getCell(j, i).getContents();
...
调用方法写入txt文件即可
}
}
rightxiang
2011-10-14
打赏
举报
回复
[Quote=引用 10 楼 kouyisc 的回复:]
给你一段 我用jxl读取excel生成txt的代码:
/**
* 读取xls文件到set
*
* @throws Exception
*/
public static Set<String> readXlsfile(File filePath) {
Set<String> set = new HashSet<String>();
try {
// long l = Sys……
[/Quote]
读取合并的单元格呢
rightxiang
2011-10-14
打赏
举报
回复
[Quote=引用 11 楼 ioe_gaoyong 的回复:]
什么是你需要的单元格,你好像听不懂中国话
引用 8 楼 rightxiang 的回复:
引用 7 楼 ioe_gaoyong 的回复:
什么是 “需要的单元格”
引用 6 楼 rightxiang 的回复:
引用 4 楼 ioe_gaoyong 的回复:
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮你
你解释一下吧
不是全部读取 只提……
[/Quote]
这么多人就你不明白
不关橙猫猫事的哦
2011-10-14
打赏
举报
回复
用Poi不行么?可以指定要读哪个单元格。。。
风尘中国
2011-10-14
打赏
举报
回复
什么是你需要的单元格,你好像听不懂中国话
[Quote=引用 8 楼 rightxiang 的回复:]
引用 7 楼 ioe_gaoyong 的回复:
什么是 “需要的单元格”
引用 6 楼 rightxiang 的回复:
引用 4 楼 ioe_gaoyong 的回复:
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮你
你解释一下吧
不是全部读取 只提取需要的单元格的内容
一般都是全部读取出来吧 我有可能读取第七行第五列 有可能读取其他……
[/Quote]
kouyiSC
2011-10-14
打赏
举报
回复
给你一段 我用jxl读取excel生成txt的代码:
/**
* 读取xls文件到set
*
* @throws Exception
*/
public static Set<String> readXlsfile(File filePath) {
Set<String> set = new HashSet<String>();
try {
// long l = System.currentTimeMillis();
InputStream is = new FileInputStream(filePath);
Workbook rwb = Workbook.getWorkbook(is);
Sheet[] sheets = rwb.getSheets();// 获得当前Excel表共有几个sheet
int p = sheets.length;
// System.out.println("此表共有几个sheet------->" + p);
for (int w = 0; w < p; w++) {
// 将每个sheet中的内容全部读取出来
Sheet rs = rwb.getSheet(w);
int rows = rs.getRows();
for (int d = 1; d < rows; d++) {
// 行循环,Excel的行列是从(0,0)开始的
Cell b00 = rs.getCell(0, d);
String strb = b00.getContents();
set.add(strb);
}
}
// System.out.println("mapping执行之间:" + (System.currentTimeMillis() - l) + "毫秒");
System.out.println("长度" + set.size());
} catch (Exception e) {
System.out.println(e.getMessage());
}
return set;
}
/**
* 读取xls文件到Map
*
* @throws Exception
*/
public static HashMap<Integer, String[]> readXlsfileMap(File filePath) {
HashMap<Integer, String[]> set = new HashMap<Integer, String[]>();
try {
long l = System.currentTimeMillis();
InputStream is = new FileInputStream(filePath);
Workbook rwb = Workbook.getWorkbook(is);
Sheet[] sheets = rwb.getSheets();// 获得当前Excel表共有几个sheet
int p = sheets.length;
// System.out.println("此表共有几个sheet------->" + p);
int k = 1;
for (int w = 0; w < p; w++) {
// 将每个sheet中的内容全部读取出来
Sheet rs = rwb.getSheet(w);
int rows = rs.getRows();
for (int d = 1; d < rows; d++) {
// 行循环,Excel的行列是从(0,0)开始的
Cell b00 = rs.getCell(0, d);
String strb = b00.getContents();
set.put(k, new String[]{strb});
k ++;
}
}
//System.out.println("mapping执行之间:" + (System.currentTimeMillis() - l) + "毫秒");
//System.out.println("map长度" + set.size());
} catch (Exception e) {
System.out.println(e.getMessage());
}
return set;
}
/**
* 读取xls文件到set
*
* @throws Exception
*/
public static void readXlsfile2(InputStream is){
POIFSFileSystem fs = null;
HSSFWorkbook wb = null;
HSSFSheet sheet = null;
HSSFRow row = null;
long l = System.currentTimeMillis();
Set<String> set = new HashSet<String>();
try{
fs = new POIFSFileSystem(is);
wb = new HSSFWorkbook(fs);
}catch (Exception e) {
System.out.println(e.getMessage());
}
for (int w = 0; w < 1; w++) {
sheet = wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
row = sheet.getRow(0);
for (int i = 1; i <= rowNum; i++) {
row = sheet.getRow(i);
set.add(row.getCell((short)0).toString());
}
}
System.out.println("mapping执行之间:" + (System.currentTimeMillis() - l) + "毫秒");
System.out.println("set长度" + set.size());
}
上面有几种方法
写入txt
/**
* 将数据写入txt文件中,并下载到本地
*/
public static void writeTxtFile(List<String> set, File file, String fileName, HttpServletResponse
response) throws Exception {
// 写入文件
if (Utils.isNull(set))
return;
BufferedWriter outp = new BufferedWriter(new FileWriter(file, true));
int k = 0;
for (String phone : set) {
k++;
outp.write(String.valueOf(phone));
outp.newLine();
if (k % 10000 == 0) {
outp.flush();
k = 0;
}
}
outp.flush();
outp.close();
outp = null;
// 下载文件
try {
fileName = "new_noblack_" + fileName;
download(file, fileName, response);
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("下载文件异常" + e.getMessage());
}
}
/**
* 将发件箱数据写入csv文件中,并下载到本地
*/
public static void writeCsvFile(List<SmsSend> set, File file, String fileName, HttpServletResponse
response) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 写入文件
if (Utils.isNull(set))
return;
BufferedWriter outp = new BufferedWriter(new FileWriter(file, true));
String title = "收信人,发送状态,发送时间,消息内容";
String text = "";
outp.write(title);
outp.newLine();
int k = 0;
for (SmsSend send : set) {
k++;
text = send.getSmsPhone() + "," + setStatus(send.getSmsStatusCode()) + "," +
df.format(send.getSmsTime()) + "," + send.getSmsContent();
outp.write(String.valueOf(text));
outp.newLine();
if (k % 10000 == 0) {
outp.flush();
k = 0;
}
}
outp.flush();
outp.close();
outp = null;
}
一般像你这种需求 ,都是分两步走。。。先写一个读数据的类,再写一个写数据的类。。
然后写一个总的,调用读数据的类成功后再写入数据。。。
rightxiang
2011-10-14
打赏
举报
回复
怎样读取合并的单元格啊
rightxiang
2011-10-14
打赏
举报
回复
[Quote=引用 7 楼 ioe_gaoyong 的回复:]
什么是 “需要的单元格”
引用 6 楼 rightxiang 的回复:
引用 4 楼 ioe_gaoyong 的回复:
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮你
你解释一下吧
不是全部读取 只提取需要的单元格的内容
[/Quote]
一般都是全部读取出来吧 我有可能读取第七行第五列 有可能读取其他行其他列 不是全部读到 明白??
风尘中国
2011-10-14
打赏
举报
回复
什么是 “需要的单元格”
[Quote=引用 6 楼 rightxiang 的回复:]
引用 4 楼 ioe_gaoyong 的回复:
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮你
你解释一下吧
不是全部读取 只提取需要的单元格的内容
[/Quote]
rightxiang
2011-10-14
打赏
举报
回复
[Quote=引用 4 楼 ioe_gaoyong 的回复:]
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮你
你解释一下吧
[/Quote]
不是全部读取 只提取需要的单元格的内容
kai27ks
2011-10-14
打赏
举报
回复
http://www.jspcn.net/htmlnews/11453819137961448.html
风尘中国
2011-10-14
打赏
举报
回复
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮你
你解释一下吧
rightxiang
2011-10-14
打赏
举报
回复
急啊 昨天找了一天
丶蒙圈丶
2011-10-14
打赏
举报
回复
帮顶,没接触过
rightxiang
2011-10-14
打赏
举报
回复
没人回复啊 !!!!
风尘中国
2011-10-14
打赏
举报
回复
这么多人没有一个明白的, 你需要读取的单元格是什么样的规则说了没?
值满足怎么样的条件,还是值类型满足什么条件? 你不说谁帮你解决问题
再问你一句,什么是你需要的单元格,听的懂中国话么?
[Quote=引用 13 楼 rightxiang 的回复:]
引用 11 楼 ioe_gaoyong 的回复:
什么是你需要的单元格,你好像听不懂中国话
引用 8 楼 rightxiang 的回复:
引用 7 楼 ioe_gaoyong 的回复:
什么是 “需要的单元格”
引用 6 楼 rightxiang 的回复:
引用 4 楼 ioe_gaoyong 的回复:
你自己不说清楚 什么是你所谓的“所需的单元格”,别人怎么帮……
[/Quote]
操作
Excel
文件
(
读取
和
生成
)
jxl
和poi
操作
Excel
文件
(
读取
和
生成
)
jxl
和poi 详细实例
jxl
的
excel
的
文件
生成
,与
读取
,
excel
2003
excel
生成
,与
excel
的
读取
EXCEL
生成
与
读取
利用 java 以及
jxl
对
Excel
文件
进行 读写处理。可
生成
Excel
文件
,同时支持其他 针对
Excel
的辅助功能。
java
读取
excel
文件
POI+
jxl
poi包括三种常用jar包,各自支持的格式在
文件
名里表示出来了。
jxl
相对操作容易但是功能简单,poi操作复杂但是功能更强大,具体用哪个看自己吧。另外poi还支持对PPT,WORD等
文件
的支持。。
用
jxl
实现的
读取
excel
(可以处理html格式的
excel
)
用
jxl
实现的
读取
excel
文件
,
生成
相应的对象集合。对于
读取
html格式的
excel
文件
抛出的BiffException异常做了相应的处理
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章