`

java 导入 excel cvs 文件

 
阅读更多
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 文件,支持xls、xlsx、csv格式

    综上所述,Java导入Excel文件涉及的关键技术包括Apache POI库的使用,对HSSF和XSSF的理解,以及对CSV文件处理的技巧。通过熟练掌握这些知识,你可以编写出高效且健壮的文件导入程序,满足各种需求。

    java导出excel(CVS格式)

    java导出CVS,csv只是一种文件的形式。。。就是按照逗号(英文逗号)分隔的文件 它的做成跟普通的文件做成是一样一样的,只需要创建一个文件(*.csv),把字符串按照一定的格式(AAA,BBB\nCCC,DDD注意必须是英文的...

    导入导出excel、cvs

    综上所述,"导入导出excel2003、2007、cvs 的demo"涵盖了使用Apache POI处理Excel文件以及处理CSV文件的基本步骤。CustBatchModifyAction.java作为这个过程的一部分,可能是实现批量数据修改的关键组件。在实际开发...

    java读取cvs文件并导入数据库

    "java读取cvs文件并导入数据库" Java读取CSV文件并导入数据库是很常见的一种数据导入方式,今天我们就来详细介绍这个过程。 为什么需要读取CSV文件并导入数据库? 在实际应用中,我们经常会遇到需要将数据从CSV...

    java导出word、excel、pdf、txt文件,同时兼容office2003和office2007

    在处理文件导出,尤其是办公文档如Word、Excel、PDF和TXT时,Java提供了多个库来帮助开发者实现这些功能。本教程将详细介绍如何使用Java进行文件导出,并确保与Office 2003和Office 2007的兼容性。 首先,我们要...

    POI导出导入Excel

    使用POI技术对Excel导入导出及支持CSV文件导入导出。

    poi导出cvs文件

    Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来创建CSV文件,这在数据导入导出、数据分析或报表生成等场景中非常常见。 CSV文件因其...

    list导出为excel,cvs

    你可以搜索“Java list 导出 excel cvs”关键词在CSDN上找到这些资源,获取更详细的实现代码和示例。 在实际开发中,可能还需要考虑其他因素,如错误处理、性能优化、文件大小限制等。例如,大型数据集可能需要分批...

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取和写入csv文件时,中文字符如果不正确地处理,可能会出现乱码的情况。下面我们将详细介绍Java避免UTF-8的csv文件打开...

    读取Excel格式CSV格式文件

    本文将深入探讨如何在Java环境中读取Excel格式(.xls或.xlsx)以及CSV(逗号分隔值)格式的文件,同时也会提及所给的压缩包文件中的相关资源。 首先,Excel文件是一种由Microsoft Office提供的电子表格格式,用于...

    easypoi导入导出实例

    它提供了方便快捷的Excel导入导出功能,使得在Java应用中处理Excel数据变得非常简单。在这个“easypoi导入导出实例”中,我们能够看到一个完整的项目示例,包括了必要的代码和一个名为"user.xls"的Excel模板文件,...

    批量导出CVS-千万级数据处理

    JXL则是另一个Java库,专注于处理Excel文件,尤其是老版本的XLS格式。它提供了读取、写入和修改Excel文件的功能,但在处理大数据时,JXL不如POI高效,因为它没有内置的分块处理机制。 在处理千万级数据时,关键在于...

    ssh导出cvs到客户端

    总结,"ssh导出cvs到客户端"这个任务涉及了使用Java编程语言和Apache POI库生成CSV文件,然后利用SSH协议(可能通过JSch库)将文件安全地传输到客户端。这个过程在数据迁移、备份、分析等场景中非常常见,特别是在...

    java导出生成csv文件的方法

    在Java中,处理Excel文件通常使用Apache POI库,虽然POI功能强大,但处理大量数据时会占用大量内存,尤其是在导出数据时。为了解决这个问题,开发者可以转向生成CSV文件,因为CSV文件本质上是文本文件,生成和读取都...

    如何把DB数据包转换成CVS数据包

    CSV文件易于阅读,可以被许多数据分析工具和数据库管理系统轻松导入和导出。 3. **转换过程**: - **导出数据库数据**:首先,你需要登录到相应的数据库管理系统,并使用查询工具(如MySQL Workbench、phpMyAdmin...

    easypoi导出工具

    easypoi常用导入,导出,工具,引入easypoi包ExcelUtil工具类,可以直接导出查询的数据

    poi大量数据读取gc内存溢出解决方案

    poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...

    将csv文件中15位以上的数字正确显示

    此外,如果问题出现在数据导入到数据库或其他系统的过程中,可能需要调整目标系统的数字字段类型或设置。例如,在SQL中,可以使用BIGINT或DECIMAL类型存储大整数,确保不会因类型限制导致数据丢失。 最后,我们可以...

    javacsv.zip 内含有jar包

    许多数据库、电子表格软件(如Microsoft Excel)和其他分析工具都支持导入和导出CSV文件。 总之,JavaCSV库提供了一个简洁的API来处理CSV文件,无论是读取现有的数据还是创建新的CSV文件,都能高效地完成任务。了解...

    java项目经验 大概有20个

    - POI处理Excel数据导入导出 - DWR实现页面实时监控数据更新 - 责任:项目组长,负责需求确认、数据库设计、模块划分、工作分配、核心编码及后期维护。 2. **短信发送软件和号码拨测软件** - 开发时间:2010年3...

Global site tag (gtag.js) - Google Analytics