`

Excel操作 >> 导入

 
阅读更多
/**
	 * 導入文件(excel)
	 * @author dingyuanwei
	 * @param path   路徑+檔名
	 * @param line   從第幾欄開始(写出的Excel) 从0开始算起
	 * @param rowLen 到第几列结束   从1开始算起
	 * @param atRow 从第几行开始写(写入的Excel) 从0开始算起
	 * @return list 返回一个包含行的LIST对象记录
	 * @return inputStream 将excel进行流化
	 * @throws Exception
	 * 解析Excel文件
	 */
	public static List<Object> importData(InputStream inputStream,int atRow, int line, int rowLen) throws Exception{  
		List<Object> tmpList = new ArrayList<Object>();  
		POIFSFileSystem pfs = new POIFSFileSystem(inputStream);
		HSSFWorkbook wb = new HSSFWorkbook(pfs);
		HSSFSheet sheet = wb.getSheetAt(0);//第0索引文件解析
		HSSFRow row = null;
		try{   
			int totalRow = sheet.getLastRowNum(); //excel資料行數
			if(totalRow>0){ //判斷excel是否為空
				for(int i = atRow ; i <=totalRow; i++){
			    	List<Object> rowList = new ArrayList<Object>();  
			    	row = sheet.getRow(i);
			    	if(row!=null){ //判断行是否为空
			    		for(int j = line; j < rowLen; j++){  
							HSSFCell cell = row.getCell((short) j);
							if(cell == null){ //判断列是否为空
								rowList.add(""); 
							}else{
								int ctype = cell.getCellType();
								switch(ctype){
									// 處理string部份
									case HSSFCell.CELL_TYPE_BLANK:
										rowList.add("");
									break;
									
									case HSSFCell.CELL_TYPE_STRING:
										rowList.add(cell.getRichStringCellValue().getString().trim());
									break;
									
									//處理number部份
									case HSSFCell.CELL_TYPE_NUMERIC:
										
										if (HSSFDateUtil.isCellDateFormatted(cell)) { // 是否為日期型
											System.out.print( cell.getDateCellValue());
											//須轉date格式
											rowList.add(cell.getDateCellValue()); 
									    }else{
									    	
											double tmpdouble = cell.getNumericCellValue();
											if(tmpdouble - (int)tmpdouble < Double.MIN_VALUE) { 
												
												//int 
												rowList.add(Integer.toString((int)tmpdouble)); 
											}else{ 
												
												//double 
												rowList.add(Double.toString(cell.getNumericCellValue())); 
											}
									    }
									break;
									
									//處理boolean部份
									case HSSFCell.CELL_TYPE_BOOLEAN:  
										rowList.add(cell.getBooleanCellValue()); 
									break;
								} 
							}  
				    	} 
				    	tmpList.add(rowList);//加入每一行,行中又包含单元格字段
			    	}
			    }
			}
		}catch(Exception e){ 
			e.printStackTrace();
			throw e;
		} 
	    return tmpList;//所有的行
	}
	
	public static void main(String[] args) throws FileNotFoundException, Exception {
		List  a = importData(new FileInputStream("E:\\项目需求\\華文網開發需求\\example.xls"),1,0,5);
		List parseData;
		List resultResult = new ArrayList();
		List successData = new ArrayList(); 
		int s = 0;
		int f = 0;
		try {
			parseData = ExcelUtil
					.importData(
							new FileInputStream("E:\\项目需求\\華文網開發需求\\example.xls"),
							1, 0, 5);
			for (int i = 0; i < parseData.size(); i++) {
				List tempResult = (List) parseData.get(i);
				boolean tfFalse = false;//標志成功或失敗
				Pattern p = Pattern.compile("[1-9]\\d*");//是否是正整數表達式
				TeachreSource ts = new TeachreSource();
				
				
				for (int j = 0; j < tempResult.size(); j++) {
					String temp = "";
					switch (j) {
						case 0:
							temp = tempResult.get(0).toString(); // *教學資源類別ID
							if("".equals(temp)){
								tfFalse = false;
							}else if(!p.matcher(temp.trim()).matches()){
								tfFalse = false;//是否是正整數
							}else{
								tfFalse = true;
							}
							break;
						case 1:
							//temp = tempResult.get(1).toString(); //教學資源類別
							tfFalse = true;
							break;
						case 2:
							temp = tempResult.get(2).toString();//*商品名稱
							if("".equals(temp)){
								tfFalse = false;
							}else{
								tfFalse = true;
							}
							break;
						case 3:
							temp = tempResult.get(3).toString();//冊次
							if("".equals(temp)){
								tfFalse = true;
							}else if(!p.matcher(temp.trim()).matches() || Integer.parseInt(temp) > 99){
								tfFalse = false;
							}else{
								tfFalse = true;
							}
							break;
						case 4:
							temp = tempResult.get(4).toString();//*路徑
							File file1=new File(temp.trim());
							if(file1.isFile()){
								tfFalse = true;
							}else{
								tfFalse = false;
							}
							
							break;

					}
					
					if(!tfFalse){
						break;//中斷循環
					}
				}
				
				
				if(tfFalse){
					successData.add(ts);//加入的數據
					s ++;
					
				}else{
					f ++;
				}
			}
			resultResult.add(s);
			resultResult.add(f);
			
		} catch (Exception e) {
			e.printStackTrace();
			
		}
		System.out.println(a);
	}
	

 

 

 

 

package com.tkb.post.action.admin;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
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 com.sun.org.apache.bcel.internal.generic.Select;

public class importExcel {

	
	
	
	public static List<Object> importData(InputStream inputStream,int atRow, int line, int rowLen) throws Exception{     
        List<Object> tmpList = new ArrayList<Object>();     
        POIFSFileSystem pfs = new POIFSFileSystem(inputStream);   
        HSSFWorkbook wb = new HSSFWorkbook(pfs);   
        HSSFSheet sheet = wb.getSheetAt(2);//第2索引文件解析   EB_VIEW_ORG
        HSSFRow row = null;   
        try{      
            int totalRow = sheet.getLastRowNum(); //excel資料行數   
            if(totalRow>0){ //判斷excel是否為空   
                for(int i = atRow ; i <=totalRow; i++){   
                    List<Object> rowList = new ArrayList<Object>();     
                    row = sheet.getRow(i);   
                    if(row!=null){ //判断行是否为空   
                        for(int j = line; j < rowLen; j++){     
                            HSSFCell cell = row.getCell((short) j);   
                            if(cell == null){ //判断列是否为空   
                                rowList.add("");    
                            }else{   
                                int ctype = cell.getCellType();   
                                switch(ctype){   
                                    // 處理string部份   
                                    case HSSFCell.CELL_TYPE_BLANK:   
                                        rowList.add("");   
                                    break;   
                                       
                                    case HSSFCell.CELL_TYPE_STRING:   
                                        rowList.add(cell.getRichStringCellValue().getString().trim());   
                                    break;   
                                       
                                    //處理number部份   
                                    case HSSFCell.CELL_TYPE_NUMERIC:   
                                           
                                        if (HSSFDateUtil.isCellDateFormatted(cell)) { // 是否為日期型   
                                            System.out.print( cell.getDateCellValue());   
                                            //須轉date格式   
                                            rowList.add(cell.getDateCellValue());    
                                        }else{   
                                               
                                            double tmpdouble = cell.getNumericCellValue();   
                                            if(tmpdouble - (int)tmpdouble < Double.MIN_VALUE) {    
                                                   
                                                //int    
                                                rowList.add(Integer.toString((int)tmpdouble));    
                                            }else{    
                                                   
                                                //double    
                                                rowList.add(Double.toString(cell.getNumericCellValue()));    
                                            }   
                                        }   
                                    break;   
                                       
                                    //處理boolean部份   
                                    case HSSFCell.CELL_TYPE_BOOLEAN:     
                                        rowList.add(cell.getBooleanCellValue());    
                                    break;   
                                }    
                            }     
                        }    
                        tmpList.add(rowList);//加入每一行,行中又包含单元格字段   
                    }   
                }   
            }   
        }catch(Exception e){    
            e.printStackTrace();   
            throw e;   
        }    
        return tmpList;//所有的行   
    }   

	
	/**
	 * @param args
	 * @throws Exception 
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws FileNotFoundException, Exception {
		String sql = "";
		List  a = importData(new FileInputStream("D:\\1.xls"),1,0,5);  
		for(int i=0;i<a.size();i++){
			List b = (List)a.get(i);
			sql += "insert into eb_view_org(nodeID,parentNodeId,supervisorUserPK,twTitle,twTitlePath,nodePath,isExist) values(";
			for (int j = 0; j < b.size(); j++) {
				sql += "'"+ b.get(j)+"'";
			}
			sql +=");";
		}
		System.out.println(sql);
	}

}

 

0
0
分享到:
评论

相关推荐

    QT 高效 导入导出excel , tableWidget显示

    在QT编程中,高效地导入和导出Excel数据并将其显示在`tableWidget`中是一项常见的需求。这里我们将深入探讨如何实现这一功能,以及优化性能的方法。QT是一个跨平台的应用程序开发框架,提供了丰富的GUI组件,`...

    winform Excel表格导入导出操作

    下面将详细讲解如何在winform中实现对Excel的导入和导出操作,并指定导入及导出路径。 一、Excel导入操作 1. 引用库:首先,你需要在项目中引用Microsoft.Office.Interop.Excel库,这允许你通过.NET Framework与...

    jsp 导入 excel的例子

    本例子将介绍如何在JSP中利用POI库来实现Excel数据的导入功能。 首先,我们需要在项目中引入Apache POI的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;org.apache....

    FineReport实现EXCEL数据导入自由报表

    这样,填报页面上就会出现导入按钮,使得操作者可以方便地导入Excel数据。需要注意的是,这些设置仅在当前模板中生效。如果希望设置能够对整个服务器上的所有模板有效,则需要在服务器配置中进行相应的设置。 第二...

    如何在informatica里导入excel文件当做源文件

    在 PowerCenter Designer 中,打开源-&gt;从数据库导入,在数据源中选择 Excel 驱动,配置数据源-&gt;系统 DSN-&gt;添加-&gt;输入数据源驱动名称-&gt;选择需要导入的 Excel 文件。最后确定,选择 Excel 驱动,选择之前定义的范围。 ...

    jeecg导入Excel

    "Jeecg导入Excel"功能是Jeecg框架中的一个重要特性,允许用户通过上传Excel文件来批量导入数据到系统中,极大地提高了数据录入的效率。下面将详细介绍这一功能及其相关知识点。 1. **Excel导入原理**: Jeecg框架...

    C# excel导入出错解决办法

    "C# Excel导入出错解决办法" 在ASP.NET项目开发过程中,经常需要进行数据处理,Oracle数据库和Microsoft Excel在数据处理过程中经常使用到。Oracle数据库可以处理大量数据,无论性能和坚固性都是非常好的数据库...

    前端-HTML-Web Excel导入

    在前端开发中,Web Excel导入是一项常见的需求,它允许用户在网页上直接上传Excel文件,以便进行数据的读取、处理或展示。这项技术对于数据分析、报表制作等场景尤为重要。以下将详细介绍实现Web Excel导入涉及的...

    C# 导入Excel文件到ListView和导出ListView到Excel文件

    本主题将详细探讨如何使用C#实现从Excel文件导入数据到ListView控件,以及如何将ListView中的数据导出回Excel文件。这两个操作在数据分析、报表生成和数据管理等场景中非常常见。 首先,要导入Excel文件到ListView...

    用Jxls实现数据导入excel实例

    通过这种方式,Jxls可以帮助我们高效地完成数据导入Excel的任务,避免了手动操作Excel的繁琐过程。同时,由于模板和数据分离,使得模板设计更灵活,也更容易维护。总的来说,Jxls是Java开发中处理Excel数据导入导出...

    pb9excel导入

    本文将深入解析这一操作的具体步骤、注意事项以及潜在的错误处理机制,为IT专业人士提供一个全面的PB9 Excel导入指南。 ### 一、PB9与Excel交互原理 在PB9中实现Excel文件导入主要依赖于OLE (Object Linking and ...

    C#将数据导入excel和Excel数据导入数据库

    而Microsoft.Office.Interop.Excel是微软提供的COM互操作组件,可以直接调用Office应用程序接口来操作Excel,但需要Excel安装在运行环境中。 例如,使用NPOI读取Excel数据的基本流程如下: 1. 引入NPOI库。 2. ...

    c#ExceL导入支持2003和2007两种导入

    在C#编程中,处理Excel数据的导入是一项常见的任务,特别是在数据处理、数据分析或系统集成等领域。本主题将深入探讨如何在C#中实现对Excel 2003和2007两种不同版本文件的支持,包括数据读取、转换以及可能遇到的...

    VB EXCEL导入 EXCEL导入 EXCEL导入

    假设我们有一个名为"药品导入"的Excel文件,我们要将其数据导入到另一个Excel文件中,可以按照以下步骤操作: 1. 定位数据范围:找到源数据所在的单元格范围,比如`Dim sourceRange As Excel.Range = worksheet....

    excel批量导入数据库

    然而,当需要将大量数据从Excel导入到数据库时,手动操作不仅耗时,还容易出错。本篇文章将详细讲解如何实现“Excel批量导入数据库”,以及利用小工具提高效率。 一、Excel与数据库的交互原理 Excel数据批量导入...

    C#实现Excel导入sqlite的方法

    总的来说,C#中实现Excel导入SQLite的过程涉及文件I/O、数据库操作、异常处理和UI交互等多个方面,这些知识点对于C#开发者来说都是基础且重要的技能。通过以上介绍,你应该能够理解如何在自己的项目中实现类似的功能...

    PLSQL Developer导入数据excel表格

    PLSQL Developer是一款专为Oracle数据库设计的集成开发环境,它提供了一套全面的工具来方便数据库管理员和开发者进行各种操作,包括数据导入。本教程将详细讲解如何使用PLSQL Developer导入Excel表格数据。 首先,...

    SpringBoot+AntDesignVue实现excel导入功能

    SpringBoot+AntDesignVue 实现 Excel 导入功能 在本篇文章中,我们将介绍如何使用 SpringBoot 和 AntDesignVue 实现 Excel 导入功能。这个功能主要是使用 Ant Design Vue 中的 upload 组件来实现导入 excel 文件的...

    excel导入数据到Oracle数据库

    ### Excel导入数据到Oracle数据库详解 #### 一、前言 在日常工作中,我们经常会遇到需要将Excel中的数据批量导入到Oracle数据库的情况。...希望本文能帮助大家更好地理解和掌握Excel导入Oracle数据库的操作流程。

Global site tag (gtag.js) - Google Analytics