扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
参考下面方法:
创新互联公司是一家专业提供湘潭企业网站建设,专注与做网站、成都做网站、H5高端网站建设、小程序制作等业务。10年已为湘潭众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class TestExcel {
//记录类的输出信息
static Log log = LogFactory.getLog(TestExcel.class);
//获取Excel文档的路径
public static String filePath = "D://excel.xls";
public static void main(String[] args) {
try {
// 创建对Excel工作簿文件的引用
HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));
// 在Excel文档中,第一张工作表的缺省索引是0
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
HSSFSheet sheet = wookbook.getSheet("Sheet1");
//获取到Excel文件中的所有行数
int rows = sheet.getPhysicalNumberOfRows();
//遍历行
for (int i = 0; i rows; i++) {
// 读取左上端单元格
HSSFRow row = sheet.getRow(i);
// 行不为空
if (row != null) {
//获取到Excel文件中的所有的列
int cells = row.getPhysicalNumberOfCells();
String value = "";
//遍历列
for (int j = 0; j cells; j++) {
//获取到列的值
HSSFCell cell = row.getCell(j);
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_FORMULA:
break;
case HSSFCell.CELL_TYPE_NUMERIC:
value += cell.getNumericCellValue() + ",";
break;
case HSSFCell.CELL_TYPE_STRING:
value += cell.getStringCellValue() + ",";
break;
default:
value += "0";
break;
}
}
}
// 将数据插入到mysql数据库中
String[] val = value.split(",");
TestEntity entity = new TestEntity();
entity.setNum1(val[0]);
entity.setNum2(val[1]);
entity.setNum3(val[2]);
entity.setNum4(val[3]);
entity.setNum5(val[4]);
entity.setNum6(val[5]);
TestMethod method = new TestMethod();
method.Add(entity);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
需要用excel的数据导入类, 提取数据,挺麻烦的。我这有写好的,用PHP写的,文件就好几个,代码在这根本放不下。你可以去找一找实例 参考写。
如果是单表比较好操作 1 利用notepad 或者sublime 列选工具选中某一列 2.开始输入insert into table 3.这样慢慢拼接成一条多条sql语句 接着一次性插入就可以了。 方法二 下载mysql workbeach工具 建立一张表子段和csv字段对应
一.使用php
excel
parser
pro软件,但是这个软件为收费软件;
二.可将excel表保存为csv格式,然后通过phpmyadmin或者sqlyog导入,sqlyog导入的方法为:
·将excel表另存为csv形式;
·打开sqlyog,对要导入的表格右击,点击“导入”-“导入使用加载本地csv数据”;
·在弹出的对话框中,点击“改变..”,把选择“填写excel友好值”,点击确定;
·在“从文件导入”中选择要导入的csv文件路径,点击“导入”即可导入数据到表上;
三.一个比较笨的手工方法,就是先利用excel生成sql语句,然后再到mysql中运行,这种方法适用于excel表格导入到各类sql数据库:
·假设你的表格有a、b、c三列数据,希望导入到你的数据库中表格tablename,对应的字段分别是col一、col二、col三
·在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:
一)增加一列(假设是d列)
二)在第一行的d列,就是d一中输入公式:
=concatenate("insert
into
tablename
(col一,col二,col三)
values
(",a一,",",b一,",",c一,");")
三)此时d一已经生成了如下的sql语句:
insert
into
table
(col一,col二,col三)
values
('a','一一','三三');
四)将d一的公式复制到所有行的d列(就是用鼠标点住d一单元格的右下角一直拖拽下去啦)
5)此时d列已经生成了所有的sql语句
陆)把d列复制到一个纯文本文件中,假设为sql.txt
·把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行
将数据另存为cvs文件,然后使用mysql的前台连接工具(如sqlyog)直接导入就可以
用VBA
例子
sub test() '定义过程名称
Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht为excel工作表对象变量,指向某一工作表
Dim cn As New ADODB.Connection '定义数据链接对象,保存连接数据库信息;请先添加ADO引用
Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表
Dim strCn As String ,strSQL as String '字符串变量
strCn = "Provider=sqloledb;Server=服务器名称或IP地址;Database=数据库名称;Uid=用户登录名;Pwd=密码;" '定义数据库链接字符串
'下面的语句将读取数据表数据,并将它保存到excel工作表中:画两张表想像一下,工作表为一张两维表,记录集也是一张两维表
strSQL = "select 字段1,字段2 from 表名称" '定义SQL查询命令字符串
cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
i = 1
Set sht = ThisWorkbook.Worksheets("sheet1") '把sht指向当前工作簿的sheet1工作表
Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
sht.Cells(i, 1) = rs("字段1") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
sht.Cells(i, 2) = rs("字段2") '把当前字段2的值保存到sheet1工作表的第i行第2列
rs.MoveNext '把指针移向下一条记录
i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
Loop '循环
rs.Close '关闭记录集,至此,程序将把某数据表的字段1和字段2保存在excel工作表sheet1的第1、2列,行数等于数据表的记录数
'下面的语句将读取excel工作表数据,并将之简单计算后存入数据库,这里使用上面程序中的一些变量
'假设分别读取工作表sheet1第5行至第500行的第8列和第9列已存在的数据,然后将它们相乘,并将积存入数据库的某个表
strSQL="" '清空上面定义的变量
for i=5 to 500 '循环开始,i从5到500
strSQL=strSQL "insert into表名(字段) values(" sht.cells(i,8)*sht.cells(i,9) ") ;" '构造SQL命令串
next
'至此生成一串SQL命令串,保存的内容大概为:insert into表名(字段) values(数值1);insert into表名(字段) values(数值2);...
cn.execute strSQL '执行该SQL命令串,如果SQL命令没有错误,将在数据库中添加501个记录;也可以用rs.open strSQL,cn执行
cn.close '关闭数据库链接,释放资源
end sub
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流