JSP 通过Servlet将excel数据导入SQL
【VIP专享】怎样把Excel文件资料导入SQL_Server2008的数据库的表中

怎样把Excel文件资料导入SQL Server2008的数据库的表中1.Excel导入SQLserver的表中前,保证Excel的表中列的顺序和数据库表的列的顺序保持一致,如果该列没有值,可以为空白。
2.打开SQL企业管理器(Microsoft SQL Server Management Studio )建议用SA身边登陆,如果Windows NT用户具有同等权限也可以3.登陆服务后,展开数据库服务器,会在最底下找到“管理”选项,单击右键,选择“导入数据(I)”选项4.单击数据导入选项后,会出现导入向导画面,直接单击“下一步”5.选择数据如下图1)在选择数据源时,请选择Microsoft Excel,因为我们的主题就是Excel导入SQL server 2)浏览要导入的Excel文件路径3)选择您要导入的Excel版本4)单击“下一步”4)数据源类型的选择列表5).Excel版本选择列表6.选择导入的目标1).选择导入的目标服务器的名称,没有显示可以手工输入的2).身份验证,建议使用windows身份验证3).选择要导入数据的数据库(Database)4).单击“下一步”7.指定表复制查询,因为本文讲述的是Excel的导入不要写SQL查询,默认选择即可,单击“下一步”8.选择源表和源视图1)本文讲述的是从Excel导入,请选择对应的源表Sheet 1$2)选择目标源,请选择您要导入的数据表的名称3)如果有需要预览源数据,请单击右下边的“预览(P)”4).数据源的预览效果,如果发现数据源与表的结构不一致时,请及时调整Excel 的格式。
9.查看数据类型映射这一步基本是系统显示目标源的数据结构和类型其次选择出错的处理方案,失败,忽略单击“下一步”10.保持并运行,是否要立刻运行。
11.完成向导,执行操作并保存数据12.执行操作的结果报告13.数据库中执行查询操作的显示结果,检查导入的数据是否正确,如有问题及时调整。
将EXCEL导入SQL表

将EXCEL表导入SQL表医院在正式使用软件之前,需要将药品、收费项目等进行集中录入。
这是一件基础工作,工作量大。
如果能够先将药品、收费项目输入到EXCEL表中,再直接导入我们的软件,这样可以加快录入速度。
从EXCEL中导入数据到SQL中,操作步骤如下:一、准备阶段(主要是为药品或者项目生成六位数的字母编码。
):首行,需要在EXCEL中增加一列,为药品生成编码。
软件默认的编码格式为六位字母。
1、人工录入完成的EXCEL表样式:请将第一行中的编码、名称、处方单位等中文改成对应的拼音字母:编码(bm)、药品名称(mc)、处方单位(dw)、整量单位(kxdw)、换算系数(xs)、规格(ggxh)、零售价(lsj)、药品分类(zxfl)1、这时,编码(bm)列为空,在灵图医院软件中,药品的编码格式为六位字母,如AAAABA、AAAABB等,但如何能够按顺序生成这样的编码呢?操作步骤如下:A、依次点工具-宏-visaul basic 编辑器,新弹出窗口如下:B、在左边的对象上,右键,选择“导入文件…”,在文件选择路径中,找到医院软件目录中的bm.bas文件,确定。
C、这时,在“模块”下方将增加“自动编码”模块,D、关掉本窗口,返回到EXCEL窗口2、在表的A2单元格中输入编码:AAAABA3、选中A3单元格,在上面的公式条中输入=GETNEXTBM(A2),回车确认,则A3单元格中的值自动生成为:AAAABB4、选中A3单元格,往下拉,所有的编码将自动生成。
二、将EXCEL表导入SQL表1、依次打开SQL的企业管理器-数据库-表,如图:2、将光标放在数据库(如:lingtu)上,单击右键,选择所有任务-导入数据。
弹开如下窗口:3、按下一步,在弹开的窗口中选择正确的数据源。
(注意:数据源选择为Microsoft Excel 97-2000)5、点“下一步”,弹开目的文件夹窗口:6、按下一步,选择用一条查询来指定需要传输的数据:7、点:下一步,点查询生成器命令,弹开如下窗口:8、选择左边的yp$,点向右的箭头,选中所需要还原的列。
如何把EXCEL数据导入到SQLSERVER数据库中

如何把EXCEL数据导入到SQLSERVER数据库中将Excel数据导入SQL Server数据库可以通过以下步骤实现:1. 打开Excel文件并选择要导入的数据:首先,打开Excel文件并选择要导入到SQL Server数据库的数据。
确保数据位于连续的单元格区域内,并且包含正确的列和行标题。
2. 导出Excel数据为CSV格式:将Excel数据导出为CSV(逗号分隔值)格式,这种格式是一种常见的数据交换格式,可以方便地被导入到SQL Server数据库中。
在Excel中,选择“文件”>“另存为”,然后选择CSV格式进行保存。
3. 创建目标表:在SQL Server数据库中创建一个目标表,用于存储要导入的数据。
可以使用SQL Server Management Studio或任何其他SQL编程工具来创建表。
确保表结构与将要导入的Excel数据的列和行标题相匹配。
4. 定义目标表的列:为目标表定义与Excel数据相匹配的列,保证目标表的列名与Excel数据的列名相同,并且数据类型也相匹配。
如果需要修改列的数据类型或长度,可以使用ALTER TABLE语句进行修改。
5. 使用SQL Server导入向导:使用SQL Server导入向导来导入CSV文件中的数据。
打开SQL Server Management Studio,右键单击目标数据库,选择“任务”>“导入数据”来打开导入向导。
6. 选择数据源:在导入向导的“选择数据源”步骤中,选择适当的数据源类型,这里选择“Flat File Source”,然后浏览找到之前保存的CSV文件。
7. 配置数据源:在导入向导的“配置Flat File Source”步骤中,配置CSV文件的设置。
确保分隔符设置为逗号(CSV的默认分隔符),并根据需要调整其他设置。
点击“下一步”继续。
8.选择目标数据库:在导入向导的“选择目标表或查看现有表”步骤中,选择目标数据库和表。
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳
![[SQL]将Excel表数据导入SQL Server2005的几种方法归纳](https://img.taocdn.com/s3/m/ea168142be1e650e52ea9912.png)
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL Server2005中,供存储过程计算。
由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。
下面将网上收集到的几种导入方法做个归纳。
方法一、利用SQL Server2005自带的DTS工具,手工导入:第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。
SQL Server 导入和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。
2、在“对象资源管理器”中右键单击“管理”,在弹出列表中单击“导入数据”。
)当你点击下一步按钮时,它将进入选择数据源向导界面。
用户应该选择数据源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面中点击属性…按钮,它将弹出数据链接属性界面。
在所有标签页中,双击数据源属性值并输入电子数据表的位置,例如“C:\Excel2007\Import\SampleData.xlsx”作为导入数据的数据源的Microsoft Office Excel 2007文件名称和路径。
然后双击扩展属性并选择Excel 12.0作为属性值。
到Microsoft Office Excel 2007的连接可以通过点击测试连接按钮来进行测试,如下图所示:在下一个页面中,数据源需要选为SQL Native Client,因为数据将导入到SQL Server 2005。
然后你需要选择数据所要导入的服务器名称,并需要配置合适的验证模式,它之后跟着数据库名称。
在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。
如何将数据从 Excel 导入到 SQL Server

本文循序渐进地演示如何用不同的方法将数据从Microsoft Excel 工作表导入到Microsoft SQL Server 数据库。
回到顶端技术说明本文中的示例使用以下工具导入Excel 数据:∙SQL Server 数据传输服务(DTS)∙Microsoft SQL Server 2005 Integration Services (SSIS)∙SQL Server 链接服务器∙SQL Server 分布式查询∙ActiveX 数据对象(ADO) 和Microsoft OLE DB Provider for SQL Server∙ADO 和Microsoft OLE DB Provider for Jet 4.0回到顶端要求下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的Service Pack:∙Microsoft SQL Server 7.0、Microsoft SQL Server 2000 或Microsoft SQL Server 2005 的可用实例∙Microsoft Visual Basic 6.0(针对使用Visual Basic 的ADO 示例)本文的部分内容假定您熟悉下列主题:∙数据传输服务∙链接服务器和分布式查询∙Visual Basic 中的ADO 开发回到顶端示例导入与追加本文使用的示例SQL 语句演示了“创建表”查询。
该查询通过使用SELECT...INTO...FROM 语法将Excel 数据导入新的SQL Server 表。
如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。
使用DTS 或SSIS可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL Server 导入和导出向导”将Excel 数据导入到SQL Server 表中。
springMVC(5)---导入excel文件数据到数据库

springMVC(5)---导⼊excel⽂件数据到数据库springMVC(5)---导⼊excel⽂件数据到数据库上⼀篇⽂章写了从数据库导出数据到excel⽂件,这篇⽂章悄悄相反,写的是导⼊excel⽂件数据到数据库。
上⼀篇链接:直接进⼊步骤讲解:第⼀步、导⼊jar包<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version></dependency>第⼆步,创建Model对象我没有把数据放到数据库中,⽽是导⼊到实体中,然后在后台打印public class Family {//家庭编号private String jtbh;//姓名private String xm;//⾏业private String hy;//备注private String bz;/** 提供set和get,toString⽅法*/}第三步.导⼊excel界⾯ leadingexcel.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html><head><script type="text/javascript" src="../js/jquery-1.7.1.js"></script><script type="text/javascript" src="../js/jquery.form.js"></script><script type="text/javascript">/* ajax ⽅式上传⽂件操作 */$(document).ready(function(){$("#btn").click(function(){ if(checkData()){$('#form1').ajaxSubmit({url:'uploadExcel/ajax',dataType: 'text',success: resutlMsg,error: errorMsg});function resutlMsg(msg){alert(msg);$("#upfile").val("");}function errorMsg(){alert("导⼊excel出错!");}}});});//JS校验form表单信息function checkData(){var fileDir = $("#upfile").val();var suffix = fileDir.substr(stIndexOf("."));if("" == fileDir){alert("选择需要导⼊的Excel⽂件!");return false;}if(".xls" != suffix && ".xlsx" != suffix ){alert("选择Excel格式的⽂件导⼊!");return false;}return true;}</script></head><body><form method="POST" enctype="multipart/form-data" id="form1" action="uploadExcel/form"><label>上传⽂件: </label><input id="upfile" type="file" name="upfile"><br><br><input type="submit" value="表单提交" onclick="return checkData()"><input type="button" value="ajax提交" id="btn" name="btn"></form></body></html>先讲下,我这src引⽤路径的时候发现,怎么也引⽤不到,找了好久才发现,我在springmvc中没有配置静态⽂件 springmvc.xml<!-- 静态资源访问 --><mvc:default-servlet-handler/><!-- 当我仅配置上⾯的时候⼜发现src是引⽤到了,但是我的RequestMapping映射却变成请求不到了,所以下⾯的也⼀定要加上 --> <mvc:annotation-driven></mvc:annotation-driven>第四步、LeadingExcelController.javaimport java.io.InputStream;import java.io.PrintWriter;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import com.ssm.model.Family;import com.ssm.service.impl.ImportExcelUtil;@Controller@RequestMapping("/jsp/uploadExcel")public class LeadingExcelController {@RequestMapping("/form")public String form(HttpServletRequest request)throws Exception{MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;InputStream in =null;List<List<Object>> listob = null;MultipartFile file = multipartRequest.getFile("upfile");if(file.isEmpty()){throw new Exception("⽂件不存在!");}in = file.getInputStream();listob = new ImportExcelUtil().getBankListByExcel(in,file.getOriginalFilename());in.close();//该处可调⽤service相应⽅法进⾏数据保存到数据库中,现只对数据输出for (int i = 0; i < listob.size(); i++) {List<Object> lo = listob.get(i);Family family = new Family();family.setJtbh(String.valueOf(lo.get(0)));family.setXm(String.valueOf(lo.get(1)));family.setHy(String.valueOf(lo.get(2)));family.setBz(String.valueOf(lo.get(3)));System.out.println("打印信息-->"+family.toString());}return null;}@RequestMapping(value="/ajax")public void ajaxUploadExcel(HttpServletRequest request,HttpServletResponse response) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;InputStream in =null;List<List<Object>> listob = null;MultipartFile file = multipartRequest.getFile("upfile");if(file.isEmpty()){throw new Exception("⽂件不存在!");}in = file.getInputStream();listob = new ImportExcelUtil().getBankListByExcel(in,file.getOriginalFilename());//该处可调⽤service相应⽅法进⾏数据保存到数据库中,现只对数据输出for (int i = 0; i < listob.size(); i++) {List<Object> lo = listob.get(i);Family family = new Family();family.setJtbh(String.valueOf(lo.get(0)));family.setXm(String.valueOf(lo.get(1)));family.setHy(String.valueOf(lo.get(2)));family.setBz(String.valueOf(lo.get(3)));System.out.println("打印信息-->"+family.toString());}PrintWriter out = null;response.setCharacterEncoding("utf-8"); //防⽌ajax接受到的中⽂信息乱码out = response.getWriter();out.print("⽂件导⼊成功!");out.flush();out.close();}}第五步、ImportExcelUtil.java 报表导⼊实现层import java.io.IOException;import java.io.InputStream;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import ermodel.HSSFWorkbook;import ermodel.Cell;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import ermodel.XSSFWorkbook;public class ImportExcelUtil {private final static String excel2003L =".xls"; //2003- 版本的excelprivate final static String excel2007U =".xlsx"; //2007+ 版本的excel/*** 描述:获取IO流中的数据,组装成List<List<Object>>对象* @param in,fileName* @return* @throws IOException*/public List<List<Object>> getBankListByExcel(InputStream in,String fileName) throws Exception{List<List<Object>> list = null;//创建Excel⼯作薄Workbook work = this.getWorkbook(in,fileName);if(null == work){throw new Exception("创建Excel⼯作薄为空!");}Sheet sheet = null;Row row = null;Cell cell = null;list = new ArrayList<List<Object>>();//遍历Excel中所有的sheetfor (int i = 0; i < work.getNumberOfSheets(); i++) {sheet = work.getSheetAt(i);if(sheet==null){continue;}//遍历当前sheet中的所有⾏for (int j = sheet.getFirstRowNum(); j < sheet.getLastRowNum(); j++) {row = sheet.getRow(j);if(row==null||row.getFirstCellNum()==j){continue;}//遍历所有的列List<Object> li = new ArrayList<Object>();for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {cell = row.getCell(y);li.add(this.getCellValue(cell));}list.add(li);}}in.close();return list;}/*** 描述:根据⽂件后缀,⾃适应上传⽂件的版本* @param inStr,fileName* @return* @throws Exception*/public Workbook getWorkbook(InputStream inStr,String fileName) throws Exception{ Workbook wb = null;String fileType = fileName.substring(stIndexOf("."));if(excel2003L.equals(fileType)){wb = new HSSFWorkbook(inStr); //2003-}else if(excel2007U.equals(fileType)){wb = new XSSFWorkbook(inStr); //2007+}else{throw new Exception("解析的⽂件格式有误!");}return wb;}/*** 描述:对表格中数值进⾏格式化* @param cell* @return*/public Object getCellValue(Cell cell){Object value = null;DecimalFormat df = new DecimalFormat("0"); //格式化number String字符SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //⽇期格式化DecimalFormat df2 = new DecimalFormat("0.00"); //格式化数字switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:value = cell.getRichStringCellValue().getString();break;case Cell.CELL_TYPE_NUMERIC:if("General".equals(cell.getCellStyle().getDataFormatString())){value = df.format(cell.getNumericCellValue());}else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())){value = sdf.format(cell.getDateCellValue());}else{value = df2.format(cell.getNumericCellValue());}break;case Cell.CELL_TYPE_BOOLEAN:value = cell.getBooleanCellValue();break;case Cell.CELL_TYPE_BLANK:value = "";break;default:break;}return value;}}第六步:最终效果,当我点击通过表单和ajax提交时(1)先展⽰上传的xls⽂件内容(2)最终控制台打出:(3)通过ajax导⼊成功,前端也会提⽰完美!想的太多,做的太少,中间的落差就是烦恼,要么去做,要么别想少尉【12】。
把Excel表导入SQL数据库的两种方法

把Excel表导入SQL数据库的两种方法SQLServer自身就有导入功能的1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按下一步,2、选择数据源 Microsoft Excel 97-2000,文件名选择要导入的xls文件,按下一步,3、选择目的用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如 VVV),使用SQL Server身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如 client),按下一步,4、选择用一条查询指定要传输的数据,按下一步,5、按查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的选中的列列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按下一步,6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中 order by 后面所跟的列,按下一步,7、如果要全部导入,则选择全部行,按下一步,8、则会看到根据前面的操作生成的查询语句,确认无误后,按下一步,9、会看到表/工作表/Excel命名区域列表,在目的列,选择要导入数据的那个表,按下一步,10、选择立即运行,按下一步,11、会看到整个操作的摘要,按完成即可。
将EXCEL的数据提出放在数据集中,在通过循环将从表插入<%'On Error Resume Next'导入Excel电子表格数据到SQL Sever数据库Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlConn)'创建数据库连接对象并打开数据库连接Dim ConnStr'SQL Server数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP)ConnStr = "Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"Set SqlConn = Server.CreateObject("ADODB.Connection")SqlConn.Open ConnStrIf Err ThenErr.ClearSet SqlConn = NothingResponse.Write "数据连接错误!"Response.EndEnd IfEndClose_Conn(SqlConn)'关闭数据库连接并清除数据库连接对象If IsObject(SqlConn) ThenSqlConn.CloseSet SqlConn = NothingEnd IfEndCall Open_Conn("Shat_EDG","","sa","(local)",SqlConn) '打开本地SQL Server数据库连接Call Open_Conn("Shat_EDG","","sa","ssh03",SqlConn1) '打开远程SQLServer数据库连接Get_EMP_CnName(NTACCNT)'根据用户NT帐号得到用户中文名Dim Sql1,Rs1Sql1 = "Select EMP_CNAME From RF_EMPLOYEE Where EMP_NTACCNT='"&NTACCNT&"'"Set Rs1 = Server.CreateObject("Adodb.RecordSet")Rs1.Open Sql1,SqlConn1,1,1If Rs1.Eof ThenGet_EMP_CnName = ""ElseGet_EMP_CnName = Rs1("EMP_CNAME")End IfRs1.CloseSet Rs1 = NothingEnd %><html><head><title>导入Excel电子表格数据到SQL Sever数据库</title><body bgcolor="#ACD9AF"><center><b>导入Excel电子表格数据到SQL Sever数据库</b></center><FORM METHOD="POST" name="form1">请选择数据源(本地库):<SELECT NAME="Table" title="请选择需要导入数据的表"><option></option><% Dim RsSqlDatabaseTableSet RsSqlDatabaseTable = SqlConn.OpenSchema(20)Do While Not RsSqlDatabaseTable.Eof %><option<%If Trim(Request("Table"))=RsSqlDatabaseTable(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable(2)%></option> <% RsSqlDatabaseTable.MoveNext:LoopSet RsSqlDatabaseTable = Nothing %></SELECT><input type=submit name=submit ="开始导出"><br>请选择目标表(远程库):<SELECT NAME="Table1" title="请选择需要导入数据的表"><option></option><% Dim RsSqlDatabaseTable1Set RsSqlDatabaseTable1 = SqlConn1.OpenSchema(20)Do While Not RsSqlDatabaseTable1.Eof %><option<%If Trim(Request("Table1"))=RsSqlDatabaseTable1(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable1(2)%></option> <% RsSqlDatabaseTable1.MoveNext:LoopSet RsSqlDatabaseTable1 = Nothing %></SELECT></FORM><font color=blue>导出过程中请不要刷新页面!</font><br><%If Trim(Request("Table1")) <> "" ThenDim Sql,RsSql = "Select * From Sheet1$" 'Sheet1$是我们实现用SQL Server自身数据转换功能得到的表名Set Rs = SqlConn.Execute(Sql)If Rs.Eof And Rs.Bof ThenResponse.write "没有找到您需要的数据!!<br>"ElseDo While Not Rs.EofSqlInsert = "Insert Into "&Trim(Request("Table1"))&"(EDG_Project_Name,EDG_Project_No,EDG_Project_VM,EDG_Project_VM_CnName ,EDG_Project_M,EDG_Project_M_CnName,EDG_Project_Director,EDG_Project_ Director_CnName) s ('"&Trim(Rs("工程名称"))&"','"&Trim(Rs("工程编号"))&"','"&Trim(Rs("项目副理"))&"','"&Trim(Rs("项目副理"))&" ("&Get_EMP_CnName(Trim(Rs("项目副理")))&")"&"','"&Trim(Rs("项目经理"))&"','"&Trim(Rs("项目经理"))&" ("&Get_EMP_CnName(Trim(Rs("项目经理")))&")"&"','"&Trim(Rs("项目总监"))&"','"&Trim(Rs("项目总监"))&" ("&Get_EMP_CnName(Trim(Rs("项目总监")))&")"&"')"' Response.Write SqlInsert'此处插入的值根据实际数据库结构进行调整SqlConn1.Execute(SqlInsert)'插入Excel表格裏所有东东Rs.MoveNextLoopResponse.Write "<font color=red>恭喜,成功导出数据!^_^</font><br>" End IfRs.CloseSet Rs = NothingEnd IfCall Close_Conn(SqlConn) '关闭Excel数据库连接Call Close_Conn(SqlConn1) '关闭SQL Server数据库连接 %>。
ASP将Excel数据导入到SQLServer的实现代码

ASP将Excel数据导⼊到SQLServer的实现代码复制代码代码如下:<form action="insert.asp" method="post" enctype="multipart/form-data" name="form1" onSubmit="b1_onclick()"> <table width="500" border="1" align="center" cellpadding="0" cellspacing="0"><tr><td colspan="2" bgcolor="#999999" class="t">选择⽂件</td></tr><tr><td colspan="2" class="t"> </td></tr><tr><td width="126" class="t">选择⽂件(excel)</td><td width="368" class="t"><label><input name="filexls" type="file" size="35"></label></td></tr><tr><td colspan="2" class="t"><label><input type="submit" name="Submit" value="导⼊数据"></label><a href="1122.asp" class="t">返回</a></td></tr></table></form><!--#include virtual="/inc/clsdbctrl.asp"--><!--#include virtual="/inc/function.asp"--><%dim upfile_5xSoft_StreamClass upload_5xSoftdim Form,File,VersionPrivate Sub Class_Initializedim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFiledim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStrVersion="任翔专⽤上传程序"if Request.TotalBytes<1 then Exit Subset Form=CreateObject("Scripting.Dictionary")set File=CreateObject("Scripting.Dictionary")set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")upfile_5xSoft_Stream.mode=3upfile_5xSoft_Stream.type=1upfile_5xSoft_Stream.openupfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)vbEnter=Chr(13)&Chr(10)iDivLen=inString(1,vbEnter)+1strDiv=subString(1,iDivLen)iFormStart=iDivLeniFormEnd=inString(iformStart,strDiv)-1while iFormStart < iFormEndiStart=inString(iFormStart,"name=""")iEnd=inString(iStart+6,"""")mFormName=subString(iStart+6,iEnd-iStart-6)iFileNameStart=inString(iEnd+1,"filename=""")if iFileNameStart>0 and iFileNameStart<iFormEnd theniFileNameEnd=inString(iFileNameStart+10,"""")iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFileSize=iEnd-iStart-4elsemFileSize=0end ifset theFile=new FileInfotheFile.FileName=getFileName(mFileName)theFile.FilePath=getFilePath(mFileName)theFile.FileSize=mFileSizetheFile.FileStart=iStart+4theFile.FormName=FormNamefile.add mFormName,theFileelseiStart=inString(iEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFormValue=subString(iStart+4,iEnd-iStart-4)elsemFormValue=""end ifform.Add mFormName,mFormValueend ifiFormStart=iformEnd+iDivLeniFormEnd=inString(iformStart,strDiv)-1wendEnd SubPrivate Function subString(theStart,theLen)dim i,c,stempupfile_5xSoft_Stream.Position=theStart-1stemp=""for i=1 to theLenif upfile_5xSoft_Stream.EOS then Exit forc=ascB(upfile_5xSoft_Stream.Read(1))If c > 127 Thenif upfile_5xSoft_Stream.EOS then Exit forstemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c))) i=i+1elsestemp=stemp&Chr(c)End IfNextsubString=stempEnd functionPrivate Function inString(theStart,varStr)dim i,j,bt,theLen,strInString=0Str=toByte(varStr)theLen=LenB(Str)for i=theStart to upfile_5xSoft_Stream.Size-theLenif i>upfile_5xSoft_Stream.size then exit Functionupfile_5xSoft_Stream.Position=i-1if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) thenInString=ifor j=2 to theLenif upfile_5xSoft_Stream.EOS theninString=0Exit forend ifif AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) thennextif InString<>0 then Exit Functionend ifnextEnd FunctionPrivate Sub Class_Terminateform.RemoveAllfile.RemoveAllset form=nothingset file=nothingupfile_5xSoft_Stream.closeset upfile_5xSoft_Stream=nothingEnd SubPrivate function GetFilePath(FullPath)If FullPath <> "" ThenGetFilePath = left(FullPath,InStrRev(FullPath, "\"))ElseGetFilePath = ""End IfEnd functionPrivate function GetFileName(FullPath)If FullPath <> "" ThenGetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)ElseGetFileName = ""End IfEnd functionPrivate function toByte(Str)dim i,iCode,c,iLow,iHightoByte=""For i=1 To Len(Str)c=mid(Str,i,1)iCode =Asc(c)If iCode<0 Then iCode = iCode + 65535If iCode>255 TheniLow = Left(Hex(Asc(c)),2)iHigh =Right(Hex(Asc(c)),2)toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)ElsetoByte = toByte & chrB(AscB(c))End IfNextEnd functionEnd ClassClass FileInfodim FormName,FileName,FilePath,FileSize,FileStartPrivate Sub Class_InitializeFileName = ""FilePath = ""FileSize = 0FileStart= 0FormName = ""End SubPublic function SaveAs(FullPath)dim dr,ErrorChar,iSaveAs=1if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function if FileStart=0 or right(fullpath,1)="/" then exit functionset dr=CreateObject("Adodb.Stream")upfile_5xSoft_Stream.position=FileStart-1upfile_5xSoft_Stream.copyto dr,FileSizedr.SaveToFile FullPath,2dr.Closeset dr=nothingSaveAs=0end functionEnd Class%><%function sqlstr(data)if not isnull(data) thensqlstr="'"& replace(data,"'","''") &"'"elsesqlstr="'"& data &"'"end ifend function%><%session.CodePage=936Server.ScriptTimeOut=600000set upload=new upload_5xsoftset file=upload.file("filexls")%><%if file.fileSize>0 thenfilename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)filename=filename+"."filenameend=file.filenamefilenameshow=file.filenamefilenameend=split(filenameend,".")if filenameend(1)="xls" thenfilename=filename&filenameend(1)file.saveAs Server.mappath("uploadfiles/"&filename)elseresponse.write "数据格式不对!"response.write "<a href=file_upload.asp>返回"response.end()end ifset file=nothingelseresponse.write "⽂件不能为空!"response.write "<a href=file_upload.asp>返回"response.end()End ifset upload=nothing'上传XLS⽂件结束,下⾯从上传的XLS⽂件中读取数据写⼊到SQL数据库strAddr=server.MapPath("uploadfiles/"&filename)set excelconn=server.createobject("adodb.connection")excelconn.open "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+strAddr+";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"set rs=server.CreateObject("adodb.recordset")set rs1=server.CreateObject("adodb.recordset")sql="select * from [Sheet1$]"rs.open sql,excelconn,1,3if not(rs.bof and rs.eof) thenrs.movenextdo while not rs.eof'response.Write(rs(1))sql1="select * from member"rs1.open sql1,conn,1,3rs1.addnewRandomizeusername=""Do While Len(username)<8 '随机密码位数num1=CStr(Chr((57-48)*rnd+48)) '0~9'num2=CStr(Chr((90-65)*rnd+65)) 'A~Znum3=CStr(Chr((122-97)*rnd+97)) 'a~zusername=username&num1&num3looprs1("username")=usernamers1("password")="bb0391ec1d7bda99"'bamboo123456 if rs(0)<>"" thenrs1("company")=rs(0)end ifif rs(1)<>"" thenrs1("realname")=rs(1)end ifif rs(2)<>"" thenrs1("sex")=sexn(rs(2))end ifif rs(3)<>"" thenrs1("prof")=rs(3)end ifif rs(4)<>"" thenrs1("tel")=rs(4)end ifif rs(5)<>"" thenrs1("mobile")=rs(5)end ifif rs(6)<>"" thenrs1("address")=rs(6)end ifif rs(7)<>"" thenrs1("area")=getclassdname(rs(7),"area","cn")end ifif rs(8)<>"" thenrs1("city")=getclassdname(rs(8),"area","cn")end ifif rs(9)<>"" thenrs1("fax")=rs(9)end ifif rs(10)<>"" thenrs1("comtype")=comtypem(rs(10))end ifif rs(11)<>"" thenrs1("operation")=rs(11)end ifrs1("passed")=1rs1("activated")=1rs1("lastlogintime")=now()rs1.updaters1.closers.movenextloopend ifrs.close()set rs=nothingset rs1=nothingexcelconn.Close()conn.close()set conn=nothingfunction sexn(str)select case strcase "男"sexn=0case "⼥"sexn=1end selectend functionfunction comtypem(str)select case strcase "⽵制品"comtypem=0case "⽵机械"comtypem=1end selectend functionfunction getclassdname(str,tablename,lang)If Not IsNumeric(id) Then Exit Functionset rs2=conn.execute ("select top 1 id from "& tablename &" where classname like '%"&str&"%'")if not rs2.eof ThenIf lang<>"" ThenIf lang="cn" Thengetclassdname=getclassdname & rs2(0)ElseIf lang="en" Thengetclassdname=getclassdname & rs2(0)End IfEnd Ifelsegetclassdname=0end ifrs2.closeEnd Function%><table width="300" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC"> <tr><th bordercolor="#F1F3F8" bgcolor="#999999" class="t" scope="row"> </th></tr><tr><th class="t" scope="row">⽂件<% response.write (filenameshow) %>导⼊成功!</th></tr><tr><th class="t" scope="row"><a href="javascript:self.close()" class="t">关闭窗⼝</a></th></tr><tr><th class="t" scope="row"><a href="1122.asp" class="t">返回</a></th></tr></table>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP 通过Servlet将excel数据导入SQL2010-08-24 20:38首先声明,这资料是我自己根据网上资料改编,代码有大幅度的改动,是自己所写.在编程过程中,有时候需要将excel里德数据导入到数据库,作为一个新手,这个问题困扰了我很久,最近,我终于找到了一篇还算合适的资料,但是错误很多,前后不接,我看了后,根据这篇资料的思想,模拟做出来一个实例,当然,这只是我做的一个例子,我本来的要求还有很多,要用到框架去做等等。
但是,我会慢慢的修改过来,在此,将这个简单的例子写在博客里,供大家参考:1> 在网上下载jxl.jar,这个JAR包用于Java操作excel,下载后,将这个包复制到工程Webroot下的WEB_INF下的lib中,或是在工程中导入jxl.jar包。
2> 准备excel文件,如图所示:3> 数据库建表注意:我使用的是SQL Server 2005,如果你的数据库与我不同,则修改db.java 里的常量数据库名:EducationNET 表名:mynewsid int 主键自动增长title varchar(50)author varchar(50)acontent varchar(50)4> 写好导入数据JSP<form action="wct" method="post">选择文件1:<input type="file" name="excel" /><input type="submit" value="导入" /></form>5>db.java 用于连接数据库public class db {public Connection connstr = null;public ResultSet res = null;public PreparedStatement prase = null;static private String strUrl ="jdbc:sqlserver://localhost:1433;DataBaseName=EducationNET";static private String strUser = "sa";static private String strPwd = "123";public db(){try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");connstr = DriverManager.getConnection(strUrl, strUser, strPwd);}catch (SQLException ex){System.out.println(ex.getMessage() + "路径错误");}catch (ClassNotFoundException ex){System.out.println(ex.getMessage() + "驱动错误");}finally{System.out.println("成功了");}}public ResultSet executeQuery(String sql) throws Exception{ Statement stmt = connstr.createStatement();res = stmt.executeQuery(sql);return res;}public PreparedStatement dosql(String sql) throws Exception{ prase = connstr.prepareStatement(sql);return prase;}}6>excel.java 用于读取excel数据import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.*;import jxl.Sheet;import jxl.Workbook;public class excel {public List addCustomerAssign(File file){List ls=new ArrayList();jxl.Workbook rwb = null;try{InputStream is = new FileInp utStream(file);rwb = Workbook.getWorkbook(is);Sheet rs = rwb.getSheet(0);int rsRows = rs.getRows();for(int i=1;i <rsRows;i++){//如第一行为属性项则从第二行开始取数据(int i=0 ;i <rsRows;i++)String cell2=rs.getCell(1,i).getCon tents()+" ";String cell3=rs.getCell(2,i).getCon tents()+" ";String cell2=rs.getCell(3,i).getCon tents()+" ";String cell3=rs.getCell(4,i).getCon tents()+" ";String cell2=rs.getCell(5,i).getCon tents()+" ";String cell3=rs.getCell(6,i).getCon tents()+" ";String cell2=rs.getCell(7,i).getCon tents()+" ";String cell3=rs.getCell(8,i).getCon tents()+" ";String cell2=rs.getCell(9,i).getCon tents()+" ";String cell3=rs.getCell(10,i).getCo ntents()+" ";if(cell1!=null&&!cell1.equals(" ")&&cell2!=null&&!cell3.equals(" ")){mynews ms=new mynews();ms.setTitle(rs.getCell(0,i).get Contents());ms.setAuthor(rs.getCell(1,i).ge tContents());ms.setAcontent(rs.getCell(2,i). getContents());ls.add(ms);}}}catch(Exception e){e.printStackTrace();}finally{rwb.close();}return ls;}}7>into.javapublic class into {String sql = "insert into mynews(title,author,acontent) values(?,?,?)"; db data=new db();public PreparedStatement prase = null;public Boolean insertexcel(mynews ms) {Boolean jiaqi = false;try {prase = data.dosql(sql);prase.setString(1, ms.getTitle());prase.setString(2, ms.getAuthor());prase.setString(3, ms.getAcontent());prase.executeUpdate();jiaqi = true;} catch (Exception e) {e.printStackTrace();}return jiaqi;}}8> 实体类mynews.javapublic class mynews {private int id;private String title;private String author;private String acontent;public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getAcontent() {return acontent;}public void setAcontent(String acontent) {this.acontent = acontent;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}}9>建立servlet tosqlservlet改动它的doPost方法public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {into in=new into();excel ex=new excel();String path=newString(request.getParameter("excel").getBytes("ISO8859-1"),"UTF-8");System.out.println(path);。