解决方案 »
- 小弟想找些JAVA的书籍来看有没有哪位大牛可以推荐的
- SSH 多人开发 配置文件的问题
- j2se远程访问jboss jndi 数据源错误.(请高手们指教)
- iBatis 能不能在改了 sqlMap 文件中的查询语句而不重启应用
- struts能与zk框架整合吗?如何整合,谢谢
- 在XSL文件中怎么判断某一元素是否存在?
- 用户要求这样的并发量,JBOSS能够满足需要吗?高分求救
- 紧急一个关于结果集的奇怪问题,非常困惑
- Struts中Action处理后跳转到原页面的一个新窗口,代码如何写?
- 请问javamail的包在哪里可以下载?
- Java中List排序实体,帮忙看看呀
- 一道关于JSTL的小题,在线等
/**
* 读取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;
}一般像你这种需求 ,都是分两步走先写一个读数据的类,再写一个写数据的类。。
然后写一个总的,调用读数据的类成功后再写入数据
//根据路径创建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文件即可
}
}
现在的要求整个excel都读出来 只读取需要的单元格 并且还是合并的单元格 这么搞啊