社区
Java EE
帖子详情
jxl读取excel生成txt文件
rightxiang
2011-10-13 07:57:33
现在需要做个需求就是 用jxl读取excel文件里所需的单元格信息生成txt文件 但不是全部读取 只读取所需的单元格信息 并且有的单元格还是合并的单元格 这么弄啊 弄了一天了 也没找到 请大家指点指点 thank you !!!!
...全文
259
17
打赏
收藏
jxl读取excel生成txt文件
现在需要做个需求就是 用jxl读取excel文件里所需的单元格信息生成txt文件 但不是全部读取 只读取所需的单元格信息 并且有的单元格还是合并的单元格 这么弄啊 弄了一天了 也没找到 请大家指点指点 thank you !!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
的文本描述,如`
读取
Excel
.
txt
`,可能是一个记录了
读取
过程或结果的日志
文件
,具体内容会根据实际程序的实现而变化。 总的来说,
JXL
适合简单的
Excel
操作,而Apache POI则更适合处理复杂的
Excel
任务,...
jxl
模版
生成
excel
6. **
读取
Excel
**:除了
生成
Excel
文件
,
jxl
还可以
读取
已有的
Excel
文件
,将其内容转化为Java数据结构,便于处理和分析。 7. **示例代码**:通常,使用
jxl
的流程包括加载模板
文件
,找到要填充的单元格,使用`Cell....
java利用
jxl
生成
excel
文件
JXL
是一个开源的Java库,允许我们
读取
、写入和修改
Excel
文件
。以下将详细讲解如何使用
JXL
库来
生成
Excel
文件
。 首先,我们需要在项目中引入
JXL
库。如果你使用的是Maven,可以在pom.xml
文件
中添加以下依赖: ```xml ...
jxl
读取
excel
数据(带实例)
JXL
库提供了多种方法来
读取
Excel
文件
。首先,你需要创建一个`Workbook`对象,它是
Excel
文件
的容器。这可以通过`WorkbookSettings`和`Workbook.read()`方法实现: ```java InputStream inputStream = new ...
jxl
读取
excel
的java代码小程序
在这个"
jxl
读取
excel
的java代码小程序"中,我们将探讨如何利用
JXL
库来实现
Excel
文件
的
读取
操作。 首先,我们需要在项目中引入
JXL
库。如果使用Maven,可以在pom.xml
文件
中添加以下依赖: ```xml <groupId>...
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章