导入exce表格中的数据l到数据库

因为我的项目是JavaWeb的,所有是通过浏览器导入数据库到服务器端的数据库,这里我们采用struts来帮助我们完成。

1:首先定义一个文件上传的jsp页面。把我们的数据先上传到服务器端。

 <form action="excelUpload.action" method="post" enctype="multipart/form-data">
    
    Your excel file: <input type="file" name="file"> 
    
    <input type="submit" value="开始导入">
</form>

2:在struts.xml配置我们的action喽。

<package name="excel" extends="struts-default">
		<action name="excelUpload" class="action.ExcelUpload">
			<result name="success" type="redirect">/excelUploadSuccess.jsp</result>
			<result name="input">/excelUpload.jsp</result>			
		</action>
		 	
</package>
3:当然是书写我们的action了。

package action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import model.Person;

import org.apache.struts2.ServletActionContext;

import service.PersonService;
import service.impl.PersonServiceImpl;

import com.opensymphony.xwork2.ActionSupport;


//将excel导入到数据库,对于日期类型的有问题,只要在excel中要求日期的类型为2012-12-12就可以了,一定不能是2012/12/12 
public class ExcelUpload extends ActionSupport {
	private File file;
	private String fileFileName;
	private String fileContentType;//后面3个成员变量的命名是有规律的,不能随便起名字
	private String root;
	
	 
	public String getRoot() {
		return root;
	}
	public void setRoot(String root) {
		this.root = root;
	}
	public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public String getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}
	public String getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	
	
	@Override
	public String execute() throws Exception {
		uploadExcel2PC(); //上传excel文件到服务器的电脑上
		
		String[][] str = getDataFromExcel();//读取excel文件,并且把数据读到一个二维数组里面去。
		
		//printData(str); //打印一下数据。测试用
		
		writeData2DB(str);//把数据写到数据库。
		
		return SUCCESS;
	}
	
	private void printData(String[][] str) {
		for (int j = 0; j < str.length; j++) {  
			for (int i = 0; i < str[1].length; i++) { 
				System.out.print(str[j][i] + "    "); 
			}
			System.out.println();
		}
	}
	
	private void uploadExcel2PC() throws FileNotFoundException, IOException {
		root=ServletActionContext.getRequest().getRealPath("/upload");
		new File(root).mkdirs();
		
		InputStream is=new FileInputStream(file);
		
		//目标文件,存到目录里面
		File destFile=new File(root,fileFileName);
		
		OutputStream os=new FileOutputStream(destFile);
		
		byte[] buffer=new byte[400];
		
		int length=0;
		
		while(-1!=(length=is.read(buffer))){
			os.write(buffer,0,length);
		}
		
		is.close();
		os.close();
	}
	
	public String[][] getDataFromExcel() throws BiffException, IOException{
		File file = new File(root + "/"  + fileFileName);
			 
		Workbook book = Workbook.getWorkbook(file);	//读取excel文件  
		Sheet sheet = book.getSheet(0);     		//这里是获取第一个工作表格
		int rows = sheet.getRows();	//获取总的行数  
		int cols = sheet.getColumns();	//获取总的列数  
		String[][] str = new String[rows][cols];	//定义一个二维数组
		
		for(int i=0;i<str.length;i++){	//读取单元格内容并存放到二维数组中 默认从第一行第一列读取      
			for(int j=0;j<str[i].length;j++){                    
				Cell cell = sheet.getCell(j,i);
				str[i][j] = cell.getContents();
			}    
		}
		
		if (file.exists()) {
			file.delete();
		}
		
		return str;
	}
	
	private void writeData2DB(String[][] str) {
		for (int j = 1; j < str.length; j++) {  //从第二行开始读取
			Person person=new Person();
			
			person.setUsername(str[j][1]);
			person.setPassword(str[j][2]);
			person.setAge(Integer.parseInt(str[j][3]));
			person.setRegisterDate(StringToDate(str[j][4]));
			
			PersonService personService=new PersonServiceImpl();
			personService.savePerson(person);
		} 
	}
	
	public  java.sql.Date StringToDate(String dateStr){
		DateFormat dd=new SimpleDateFormat("yyyy-MM-dd");
		java.util.Date date=null;
		
		try {
			date = dd.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		java.sql.Date date2 = new java.sql.Date(date.getTime()); //java.util.date --->java.sql.date
		
		return date2;
	}
}

4:大功告成。当然在这里我没有写保存数据到数据库的代码。这不是这个帖子的重点。相信大家都会。










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Excel表格数据导入到MySQL数据库,可以按照以下步骤操作: 1. 在MySQL数据库创建一个新的表,确保表的结构与Excel表格数据对应。 2. 使用适当的编程语言,如Python,连接到MySQL数据库。 3. 使用合适的库,如pandas和mysql-connector-python,在Python读取Excel表格数据。 4. 将Excel表格数据转换为一个数据集,如DataFrame对象。 5. 遍历数据集,并使用INSERT语句将每条数据插入到MySQL数据库。 下面是一个示例代码,演示了如何使用Python将Excel表格数据导入到MySQL数据库: ```python import pandas as pd import mysql.connector # 连接到MySQL数据库 conn = mysql.connector.connect(host='localhost', user='your_username', password='your_password', database='your_database') cursor = conn.cursor() # 读取Excel表格数据 df = pd.read_excel('your_excel_file.xlsx') # 遍历数据集并插入到MySQL数据库 for index, row in df.iterrows(): sql = "INSERT INTO your_table (column1, column2, ...) VALUES (%s, %s, ...)" values = (row['column1'], row['column2'], ...) cursor.execute(sql, values) # 提交更改并关闭连接 conn.commit() cursor.close() conn.close() ``` 在上面的代码,你需要替换以下内容: - 'your_username':你的MySQL用户名 - 'your_password':你的MySQL密码 - 'your_database':你的MySQL数据库名 - 'your_excel_file.xlsx':你的Excel文件路径 - 'your_table':你要将数据插入的MySQL表名 - 'column1', 'column2', ...:你的MySQL表的列名,与Excel表格的列对应 确保在运行代码之前,你已经安装好了pandas和mysql-connector-python库。你可以使用pip命令来安装它们: ``` pip install pandas pip install mysql-connector-python ``` 这样,你就可以将Excel表格数据导入到MySQL数据库了。记得根据你的实际情况修改代码的相关参数和内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值