import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.io.FileUtils; import au.com.bytecode.opencsv.CSVReader; public class ReadCsv { @SuppressWarnings("unchecked") public static List<String[]> readCsv(String excelFilePath, int startRowNum){ List<String[]> excelContent = new ArrayList<String[]>(); CSVReader reader = null; File tempFile = null; try { tempFile = new File(excelFilePath); reader = new CSVReader(new InputStreamReader(FileUtils.openInputStream(tempFile))); excelContent = reader.readAll(); if(startRowNum>0){ Iterator<String[]> it = excelContent.iterator(); int i=0; while(it.hasNext()){ it.next(); if(i<startRowNum){ it.remove(); i++; }else{ break; } } } reader.close(); } catch (IOException e) { e.printStackTrace(); } return excelContent; } }
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import au.com.bytecode.opencsv.CSVWriter; /** * 读取Excel中的文件 * * @author JS * @date 2013-06-18 */ public class ReadExcel { public ReadExcel() { } /** * 读取Excel文件中的数据(支持2003和2007) * * @param excelFilePath Excel文件存放的路径 * @param startRowNum 解析Excel文件,从哪一行开始0表示从第一行开始 * * @return * * @throws IOException * * @author JS */ public static List<String[]> read2003And2007(String excelFilePath, int startRowNum) throws IOException{ List<String[]> excelContent = new ArrayList<String[]>(); Cell cell = null; Row row=null; Sheet sheet=null; Workbook wb = null; InputStream stream=null; try { if (excelFilePath.endsWith(".xls")){ stream = new FileInputStream(excelFilePath); wb = (Workbook) new HSSFWorkbook(stream); } else if (excelFilePath.endsWith(".xlsx")){ wb = (Workbook) new XSSFWorkbook(excelFilePath); } if(wb==null){ return null; } DecimalFormat df = new DecimalFormat("####.##"); SimpleDateFormat smtDate = new SimpleDateFormat("yyyy/MM/dd"); sheet = wb.getSheetAt(0); // 行数(从0开始,相当于最后一行的索引) int count_row=sheet.getPhysicalNumberOfRows(); Row firstRow=sheet.getRow(0); if(firstRow==null){ return null; } String[] temp=null; //列数 int count_cell=firstRow.getPhysicalNumberOfCells(); for (int i = startRowNum; i <=count_row; i++) { row=sheet.getRow(i); if(row==null){ continue; } temp=new String[count_cell]; for (int j = 0; j < count_cell; j++) { cell=row.getCell(j); if(null == cell) { temp[j] = ""; continue; } int type = cell.getCellType(); // 得到单元格数据类型 switch (type) { // 判断数据类型 case Cell.CELL_TYPE_BLANK: temp[j] = ""; break; case Cell.CELL_TYPE_BOOLEAN: temp[j] = cell.getBooleanCellValue() + ""; break; case Cell.CELL_TYPE_ERROR: temp[j] = cell.getErrorCellValue() + ""; break; case Cell.CELL_TYPE_FORMULA: temp[j] = cell.getCellFormula(); break; case Cell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) { double d = cell.getNumericCellValue(); Date date = HSSFDateUtil.getJavaDate(d); temp[j] = smtDate.format(date); }else{ temp[j] = df.format(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_STRING: temp[j] = cell.getStringCellValue(); break; default: temp[j] = cell.getStringCellValue(); break; } if (null != temp[j])temp[j] = temp[j].trim(); } excelContent.add(temp); } cell=null; row=null; sheet=null; wb=null; temp=null; } catch (Exception e) { e.printStackTrace(); }finally{ if(stream!=null){ stream.close(); } } return excelContent; } public static List<String[]> readSheet(Sheet sheet,int startRowNum) throws IOException{ if(sheet==null){ return null; } List<String[]> excelContent = new ArrayList<String[]>(); Cell cell = null; Row row=null; DecimalFormat df = new DecimalFormat("####.##"); // 行数(从0开始,相当于最后一行的索引) int count_row=sheet.getPhysicalNumberOfRows(); //列数 Row firstRow=sheet.getRow(0); if(firstRow==null){ return null; } int count_cell=firstRow.getPhysicalNumberOfCells(); for (int i = startRowNum; i <=count_row; i++) { row=sheet.getRow(i); if(row==null){ continue; } String temp[] = new String[count_cell]; for (int j = 0; j < count_cell; j++) { cell=row.getCell(j); if(null == cell) { temp[j] = ""; continue; } int type = cell.getCellType(); // 得到单元格数据类型 switch (type) { // 判断数据类型 case Cell.CELL_TYPE_BLANK: temp[j] = ""; break; case Cell.CELL_TYPE_BOOLEAN: temp[j] = cell.getBooleanCellValue() + ""; break; case Cell.CELL_TYPE_ERROR: temp[j] = cell.getErrorCellValue() + ""; break; case Cell.CELL_TYPE_FORMULA: temp[j] = cell.getCellFormula(); break; case Cell.CELL_TYPE_NUMERIC: temp[j] = df.format(cell.getNumericCellValue()); break; case Cell.CELL_TYPE_STRING: temp[j] = cell.getStringCellValue(); break; default: temp[j] = cell.getStringCellValue(); break; } if (null != temp[j])temp[j] = temp[j].trim(); } excelContent.add(temp); } cell=null; row=null; sheet=null; return excelContent; } @SuppressWarnings("unchecked") public static void exportExcel(List<Object> listRow,String[] titles,String fileName){ OutputStream out=null; try { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("sheet1"); HSSFRow rowtitle = sheet.createRow(0); for (int i = 0; i < titles.length; i++) { HSSFCell cell = rowtitle.createCell(i); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(titles[i]); } for (int i = 1; i <= listRow.size(); i++) { HSSFRow row = sheet.createRow(i); List<String> values=((List<String>)listRow.get(i-1)); if(values!=null&&values.size()>0){ for (int j = 0; j < values.size(); j++) { HSSFCell cell = row.createCell( j); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(values.get(j)); } } } File file=new File(fileName); out = new FileOutputStream(file); wb.write(out); out.flush(); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(out!=null){ out.close(); } } catch (Exception e2) { } } } }
相关推荐
综上所述,Java导入Excel文件涉及的关键技术包括Apache POI库的使用,对HSSF和XSSF的理解,以及对CSV文件处理的技巧。通过熟练掌握这些知识,你可以编写出高效且健壮的文件导入程序,满足各种需求。
java导出CVS,csv只是一种文件的形式。。。就是按照逗号(英文逗号)分隔的文件 它的做成跟普通的文件做成是一样一样的,只需要创建一个文件(*.csv),把字符串按照一定的格式(AAA,BBB\nCCC,DDD注意必须是英文的...
综上所述,"导入导出excel2003、2007、cvs 的demo"涵盖了使用Apache POI处理Excel文件以及处理CSV文件的基本步骤。CustBatchModifyAction.java作为这个过程的一部分,可能是实现批量数据修改的关键组件。在实际开发...
"java读取cvs文件并导入数据库" Java读取CSV文件并导入数据库是很常见的一种数据导入方式,今天我们就来详细介绍这个过程。 为什么需要读取CSV文件并导入数据库? 在实际应用中,我们经常会遇到需要将数据从CSV...
在处理文件导出,尤其是办公文档如Word、Excel、PDF和TXT时,Java提供了多个库来帮助开发者实现这些功能。本教程将详细介绍如何使用Java进行文件导出,并确保与Office 2003和Office 2007的兼容性。 首先,我们要...
使用POI技术对Excel导入导出及支持CSV文件导入导出。
Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来创建CSV文件,这在数据导入导出、数据分析或报表生成等场景中非常常见。 CSV文件因其...
你可以搜索“Java list 导出 excel cvs”关键词在CSDN上找到这些资源,获取更详细的实现代码和示例。 在实际开发中,可能还需要考虑其他因素,如错误处理、性能优化、文件大小限制等。例如,大型数据集可能需要分批...
csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取和写入csv文件时,中文字符如果不正确地处理,可能会出现乱码的情况。下面我们将详细介绍Java避免UTF-8的csv文件打开...
本文将深入探讨如何在Java环境中读取Excel格式(.xls或.xlsx)以及CSV(逗号分隔值)格式的文件,同时也会提及所给的压缩包文件中的相关资源。 首先,Excel文件是一种由Microsoft Office提供的电子表格格式,用于...
它提供了方便快捷的Excel导入导出功能,使得在Java应用中处理Excel数据变得非常简单。在这个“easypoi导入导出实例”中,我们能够看到一个完整的项目示例,包括了必要的代码和一个名为"user.xls"的Excel模板文件,...
JXL则是另一个Java库,专注于处理Excel文件,尤其是老版本的XLS格式。它提供了读取、写入和修改Excel文件的功能,但在处理大数据时,JXL不如POI高效,因为它没有内置的分块处理机制。 在处理千万级数据时,关键在于...
总结,"ssh导出cvs到客户端"这个任务涉及了使用Java编程语言和Apache POI库生成CSV文件,然后利用SSH协议(可能通过JSch库)将文件安全地传输到客户端。这个过程在数据迁移、备份、分析等场景中非常常见,特别是在...
在Java中,处理Excel文件通常使用Apache POI库,虽然POI功能强大,但处理大量数据时会占用大量内存,尤其是在导出数据时。为了解决这个问题,开发者可以转向生成CSV文件,因为CSV文件本质上是文本文件,生成和读取都...
CSV文件易于阅读,可以被许多数据分析工具和数据库管理系统轻松导入和导出。 3. **转换过程**: - **导出数据库数据**:首先,你需要登录到相应的数据库管理系统,并使用查询工具(如MySQL Workbench、phpMyAdmin...
easypoi常用导入,导出,工具,引入easypoi包ExcelUtil工具类,可以直接导出查询的数据
poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...
此外,如果问题出现在数据导入到数据库或其他系统的过程中,可能需要调整目标系统的数字字段类型或设置。例如,在SQL中,可以使用BIGINT或DECIMAL类型存储大整数,确保不会因类型限制导致数据丢失。 最后,我们可以...
许多数据库、电子表格软件(如Microsoft Excel)和其他分析工具都支持导入和导出CSV文件。 总之,JavaCSV库提供了一个简洁的API来处理CSV文件,无论是读取现有的数据还是创建新的CSV文件,都能高效地完成任务。了解...
- POI处理Excel数据导入导出 - DWR实现页面实时监控数据更新 - 责任:项目组长,负责需求确认、数据库设计、模块划分、工作分配、核心编码及后期维护。 2. **短信发送软件和号码拨测软件** - 开发时间:2010年3...