精华内容
下载资源
问答
  • Python实现数据库数据导入Excel

    千次阅读 2017-03-06 18:53:47
    之前已经使用SchemaSpy工具分析了数据库的结构,之后就可以比较方便的将数据从数据库导出到Excel等文件中,这次我选择使用Python来完成这个工作。

    之前已经使用SchemaSpy工具分析了数据库的结构,之后就可以比较方便的将数据从数据库导出到Excel等文件中,这次我选择使用Python来完成这个工作。

    1 任务简介

    把PostgreSql数据库中5张表的数据导出到Excel文件中,查询的字段涉及到5张表,所以需要联合查询,其中还有两张表存在自引用,所以还会更复杂一些。


    2 工具

    • 使用psycopg2模块连接数据库
    • 使用xlwt模块操作Excel文件

    2.1 psycopg2

    这个模块用法很常规,

    • 连接数据库
    • 执行SQL
    • 获取结果

    重点在于SQL语句的构造,因为涉及多个表,所以不得已要使用join,那么为了考虑效率应当把数据量大的表放在小表的前面。


    2.2 xlwt

    这个模块用于写Excel文件,与之对应的还有xlrd来完成读文件的操作。
    用法也很简单,

    • 新建Excel文件
    • 新建sheet表
    • 定位起始单元格
    • 写内容
    • 保存&关闭文件

    需要注意的问题有两点:

    • 文件编码,新建文件时需要指明utf-8
    • 表格大小,由于xls文件最多只能到65535行,所以表过大的时候要么换xlsx格式,要么切分成多个表。Python处理xlsx的模块是xlsxwriter

    3 代码

    具体实现如下:

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
    
    import psycopg2
    import xlwt
    
    hostIp = '127.0.0.1'
    port = '5432'
    dbName = 'source'
    user = 'liuyueyi'
    password = 'password'
    
    
    sql = '''
    select site.name,study.name,sheets.id,sheets.patient_name,crf.label,section.label,form_rows.uid,form_rows.label,sheet_row_values.value 
    from sheet_row_values 
    inner join form_rows on form_rows.uid = sheet_row_values.uid 
    inner join form_groups section on section.id = form_rows.group_id
    inner join form_groups crf on section.parent_id = crf.id
    inner join sheets on sheets.id = sheet_row_values.sheet_id 
    inner join departments site on sheets.center_id = site.id 
    inner join departments study on site.parent_id = study.id;
    '''
    
    file = xlwt.Workbook(encoding='utf-8')
    
    sheet1 = file.add_sheet(u'sheet1')
    
    row0 = [u'site_name',u'study_name',u'sheets_id',u'patient_name',u'crf_name',u'section_name',u'form_rows_uid',u'form_rows_label',u'row_value']
    for i in range(0, len(row0)):
      sheet1.write(0,i,row0[i])
    
    
    conn = psycopg2.connect(database=dbName,host=hostIp,port=port,user=user,password=password)
    cur = conn.cursor()
    cur.execute(sql)
    rows = cur.fetchall()
    
    for i in range(0,len(rows)):
      for j in range(0,len(rows[i])):
        sheet1.write(i+1,j,rows[i][j])
    
    file.save('result.xls')
    
    展开全文
  • java从数据库导入excel

    2018-03-23 09:50:58
    java把数据从数据库导入excel package com.madhouse.sys.util; import java.io.File;import java.io.IOException; import java.sql.DriverManager;import java.sql.ResultSet;import java.sql....
    
    java把数据从数据库导入到excel
     
     
    package com.madhouse.sys.util;
     
    import java.io.File;
    import java.io.IOException;
     
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
     
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     
    import com.mysql.jdbc.Connection;
    import com.mysql.jdbc.Statement;
     
    /**
     * <li>把数据导入到Excel公用类</li>
     * </br> This is about <code>ExcelUtil</code>
     *
     * @author hjy273
     * @version 1.0
     * @date Sep 6, 2008 9:52:52 PM
     */
    public class ExcelUtil {
     
        private static Log log = LogFactory.getLog(ExcelUtil.class);
     
        public ExcelUtil() {
     
        }
     
        public boolean DB2Excel(ResultSet rs) {
            boolean flag = false;
            WritableWorkbook workbook = null;
            WritableSheet sheet = null;
            Label label = null;
     
            // 创建Excel表
            try {
                 workbook = Workbook.createWorkbook(new File("e:/_report/output.csv"));
                //workbook = Workbook.createWorkbook(os);
                 
                 // 创建Excel表中的sheet
                sheet = workbook.createSheet("First Sheet", 0);
     
                // 向Excel中添加数据
                ResultSetMetaData rsmd = rs.getMetaData();
                int columnCount = rsmd.getColumnCount();
                String colName = null;
                int row = 0;
                // 添加标题
                for (int i = 0; i < columnCount; i++) {
                    colName = rsmd.getColumnName(i + 1);
                    label = new Label(i, row, colName);
                    // log.debug("标题:"+i+"---"+row +"---"+ colName);
                    sheet.addCell(label);
                }
                row++;
                log.debug("写入标题成功");
                while (rs.next()) {
                    for (int i = 0; i < columnCount; i++) {
                        label = new Label(i, row, rs.getString(i + 1));
                        log.debug("行:"+i+"---"+row +"---"+ rs.getString(i+1));
                        sheet.addCell(label);
                    }
                    row++;
                }
                log.debug("写入内容成功");
     
                // 关闭文件
                workbook.write();
                workbook.close();
                log.info("数据成功写入Excel");
                flag = true;
            } catch (SQLException e) {
                log.debug(e.getMessage());
            } catch (RowsExceededException e) {
                log.debug(e.getMessage());
            } catch (WriteException e) {
                log.debug(e.getMessage());
            } catch (IOException e) {
                log.debug(e.getMessage());
            } finally {
                try {
                    workbook.close();
                } catch (Exception e) {
                }
            }
            return flag;
        }
     
        /**
         * 测试方法
         *
         * @param args
         */
        public static void main(String[] args) {
            // write your code
            try {
     
                Class.forName("org.gjt.mm.mysql.Driver").newInstance();
                Connection conn = (Connection) DriverManager
                        .getConnection(
                                "jdbc:mysql://localhost:3306/firewall?useUnicode=true&characterEncoding=utf8",
                                "root", "root");
                Statement st = (Statement) conn.createStatement();
                ResultSet rs = st
                        .executeQuery("select * from firewall.tb_operator");
                 if (!new ExcelUtil().DB2Excel(rs)){
                     log.info("数据写入失败");
                 }
                rs.close();
                st.close();
                conn.close();
     
            } catch (Exception e) {
                e.printStackTrace();
            }
     
        }
     
    }
    展开全文
  • 如何使用php实现将数据从excel导入到mysql中?把excel 改为 cvs文件//连数据件$connect=mysql_connect("localhost","admin","admin") or die("链接数据库!");//连接数据库(test)mysql_select_db("testcg",$...

    如何使用php实现将数据从excel表导入到mysql中?

    把excel 改为 cvs文件

    //连数据件

    $connect=mysql_connect("localhost","admin","admin") or die("链接数据库!");

    //连接数据库(test)

    mysql_select_db("testcg",$connect) or die (mysql_error());

    $temp=file("test.csv");//连接EXCEL文件,格式为了.csv

    for ($i=0;$i

    {

    $string=explode(",",$temp[$i]);//通过循环得EXCEL文件中每行记录的值

    //将EXCEL文件中每行记录的值插入到数据库中

    $q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";

    mysql_query($q) or die (mysql_error());

    if (!mysql_error());

    {

    echo " 成功导入数据!";

    }

    echo $string[4]."\n";

    unset($string);

    }

    ?>

    原生PHP代码实现excel导入,并添加数据到数据库.

    把excel 改为 cvs文件

    //连数据件

    $connect=mysql_connect("localhost","admin","admin") or die("链接数据库!");

    //连接数据库(test)

    mysql_select_db("testcg",$connect) or die (mysql_error());

    $temp=file("test.csv");//连接EXCEL文件,格式为了.csv

    for ($i=0;$i

    {

    $string=explode(",",$temp[$i]);//通过循环得EXCEL文件中每行记录的值

    //将EXCEL文件中每行记录的值插入到数据库中

    $q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";

    mysql_query($q) or die (mysql_error());

    if (!mysql_error());

    {

    echo " 成功导入数据!";

    }

    echo $string[4]."\n";

    unset($string);

    }

    ?>

    导入excel文件,后端php处理导入的数据并存入数据...

    我用的代码是:

    //连文件

    $connect=mysql_connect("localhost","admin","admin") or die("链接数据库失败!");

    //连接数据库(test)

    mysql_select_db("testcg",$connect) or die (mysql_error());

    $temp=file("test.csv");//连接EXCEL文件,格式为了.csv

    for ($i=0;$i

    {

    $string=explode(",",$temp[$i]);//通过循环EXCEL文件中每行记录的值

    //将EXCEL文件中每行记录的值插入到数据库中

    $q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";

    mysql_query($q) or die (mysql_error());

    if (!mysql_error());

    {

    echo " 成功导入数据!";

    }

    echo $string[4]."\n";

    unset($string);

    }

    ?>

    --------------------------------------------------------------------------------

    phpexcel或者pear的一个组件 ,国内有一个excelclass的插件

    都是用来处理excel的,前2个功能都比较强大,对编码的支持也都不错,推荐使用pear的那个,名字好像叫spreadsheet reader

    phpexcel比较费资源,不过并不是所有的excel都能读取

    楼主可以到这里去看看 pear.php.net

    --------------------------------------------------------------------------------

    顶楼上的回答~~顺便接个分!嘿嘿

    --------------------------------------------------------------------------------

    AdO直接上传

    注意有些字符mysql或ADO可能不支持

    --------------------------------------------------------------------------------

    首先确认你的数据库是什么编码的,以utf-8为例,

    你首先打开excel 文件,然后保存,选择为另存为.csv文件。

    然后用文本编辑器打开.csv文件,另存为utf-8的csv

    然后你写php 可以使用php 的getcsv 打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。

    然后完了。

    PHPExcel如何从excel表导入到mysql数据库

    '写入库.

    oconn.execute(insert

    into

    users(userid,password)values('

    展开全文
  • 原理: 是原理很分页原理一样!...  Excel类 PHP code class Excel{ var $header = "<?xml version="1.0" encoding="utf-8"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xm
  • 将大量数据从数据库导入Excel文档

    热门讨论 2012-09-21 22:21:33
    这是我在公司实习的时候研究的课题,主要将大量数据从数据库导出到Excel文件。(一般是值Excel2007及以后版本)因为Excel2003及以前的版本中能保持的数据量是有限制的。Excel2007及以后版本中的数据能保持100万条...
  • 数据库数据导入excel中 jsp 实例中包括: 从excel导入数据库从数据库导入excel
  • [1].[代码] view source ...java把数据从数据库导入excel 002   003   004 package com.madhouse.sys.util;

    [1].[代码]

    001 java把数据从数据库导入到excel
    002  
    003  
    004 package com.madhouse.sys.util;
    005  
    006 import java.io.File;
    007 import java.io.IOException;
    008  
    009 import java.sql.DriverManager;
    010 import java.sql.ResultSet;
    011 import java.sql.ResultSetMetaData;
    012 import java.sql.SQLException;
    013  
    014 import jxl.Workbook;
    015 import jxl.write.Label;
    016 import jxl.write.WritableSheet;
    017 import jxl.write.WritableWorkbook;
    018 import jxl.write.WriteException;
    019 import jxl.write.biff.RowsExceededException;
    020  
    021 import org.apache.commons.logging.Log;
    022 import org.apache.commons.logging.LogFactory;
    023  
    024 import com.mysql.jdbc.Connection;
    025 import com.mysql.jdbc.Statement;
    026  
    027 /**
    028  * <li>把数据导入到Excel公用类</li>
    029  * </br> This is about <code>ExcelUtil</code>
    030  *
    031  * @author hjy273
    032  * @version 1.0
    033  * @date Sep 6, 2008 9:52:52 PM
    034  */
    035 public class ExcelUtil {
    036  
    037     private static Log log = LogFactory.getLog(ExcelUtil.class);
    038  
    039     public ExcelUtil() {
    040  
    041     }
    042  
    043     public boolean DB2Excel(ResultSet rs) {
    044         boolean flag = false;
    045         WritableWorkbook workbook = null;
    046         WritableSheet sheet = null;
    047         Label label = null;
    048  
    049         // 创建Excel表
    050         try {
    051              workbook = Workbook.createWorkbook(new File("e:/_report/output.csv"));
    052             //workbook = Workbook.createWorkbook(os);
    053              
    054              // 创建Excel表中的sheet
    055             sheet = workbook.createSheet("First Sheet"0);
    056  
    057             // 向Excel中添加数据
    058             ResultSetMetaData rsmd = rs.getMetaData();
    059             int columnCount = rsmd.getColumnCount();
    060             String colName = null;
    061             int row = 0;
    062             // 添加标题
    063             for (int i = 0; i < columnCount; i++) {
    064                 colName = rsmd.getColumnName(i + 1);
    065                 label = new Label(i, row, colName);
    066                 // log.debug("标题:"+i+"---"+row +"---"+ colName);
    067                 sheet.addCell(label);
    068             }
    069             row++;
    070             log.debug("写入标题成功");
    071             while (rs.next()) {
    072                 for (int i = 0; i < columnCount; i++) {
    073                     label = new Label(i, row, rs.getString(i + 1));
    074                     log.debug("行:"+i+"---"+row +"---"+ rs.getString(i+1));
    075                     sheet.addCell(label);
    076                 }
    077                 row++;
    078             }
    079             log.debug("写入内容成功");
    080  
    081             // 关闭文件
    082             workbook.write();
    083             workbook.close();
    084             log.info("数据成功写入Excel");
    085             flag = true;
    086         catch (SQLException e) {
    087             log.debug(e.getMessage());
    088         catch (RowsExceededException e) {
    089             log.debug(e.getMessage());
    090         catch (WriteException e) {
    091             log.debug(e.getMessage());
    092         catch (IOException e) {
    093             log.debug(e.getMessage());
    094         finally {
    095             try {
    096                 workbook.close();
    097             catch (Exception e) {
    098             }
    099         }
    100         return flag;
    101     }
    102  
    103     /**
    104      * 测试方法
    105      *
    106      * @param args
    107      */
    108     public static void main(String[] args) {
    109         // write your code
    110         try {
    111  
    112             Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    113             Connection conn = (Connection) DriverManager
    114                     .getConnection(
    115                             "jdbc:mysql://localhost:3306/firewall?useUnicode=true&characterEncoding=utf8",
    116                             "root""root");
    117             Statement st = (Statement) conn.createStatement();
    118             ResultSet rs = st
    119                     .executeQuery("select * from firewall.tb_operator");
    120              if (!new ExcelUtil().DB2Excel(rs)){
    121                  log.info("数据写入失败");
    122              }
    123             rs.close();
    124             st.close();
    125             conn.close();
    126  
    127         catch (Exception e) {
    128             e.printStackTrace();
    129         }
    130  
    131     }
    132  
    133 }
    展开全文
  • 把存储在在Excel中的多条User类数据导入到目标数据库 准备阶段: 配置了Mysql数据库 编译器导入了 jxl.jar 包,Excel表格处理包 编译器导入了 sql.jar 包,Mysql包 全部代码如下: JavaBean类(User类): package...
  • Java数据库导入Excel

    2011-07-18 10:32:29
    java中从数据库导出数据到Excel存到本地。
  • 在日常的项目中,Excel,Word,txt等格式的数据导入数据库中是很常见的,我在这里做一下总结 这里将分为Asp.net导入Sql Server,Oracle数据库和WinForm导入Sql Server,Oracle数据库。 1,使用DataGird生成Excel...
  • * 从EXCEL导入数据库 */ public class ObjectExcelRead { /** * @param filepath //文件路径 * @param filename //文件名 * @param startrow //开始行号 * @param startcol //开始列号 * @param ...
  • 数据库导入Excel-基础做起

    千次阅读 多人点赞 2014-06-25 20:58:41
    最近一直跟着师傅做考试系统的基础,每天与大量的数据打交道,数据的导入、数据的导出、视图的导入导出、核对信息等等,收获挺多...数据量很大,5000多条数据,一条一条写进去是不可能的,那么就直接导入Excel吧.(导出数据
  • 这是一个用openpyxl连接mysql数据库并获取数据库数据写入到excel的一个py文件
  • 这些天有个项目用到了PHP+MySQL和Excel的交互,需要导入和导出。所以,昨天摸索了一下,发现网上有很多有问题。经过自己的测试,我的可以正常在服务器上运行,在这里和大家分享一下。准备文件:1)首先准备好PHPExcel...
  • 1、excel数据表中的数据不全,数据库中又是必填选项;---sql语句入手:判断有无 来改变语句 //设置可有可无 字段 加一个必有字段 String optionals = "hospital_id "; String biyou = map.get(...
  • 数据库导入excel数据

    2017-08-07 17:28:38
    1. 在导入数据阶段出现: line contains NULL byte时,即行包含空字符。 解决方法: ...把现有的CSV文件另存为“csv”,然后重新导入即可;...这是因为 之前 的CSV有可能是直接xls重命名而来,导致格式不一致。
  • 一个通用从数据库导出excelexcel导入数据库组件的Java项目程序所用到的jar包。
  • 本代码通过.NET实现了从EXCEL导入数据到SQLServer和SQLServer导出数据到EXCEL导入导出功能
  • 程序可以完成 数据库 生成 Excel 或者从Excel导入数据库 还可以用这个来轻量级的操作数据库 程序是用C#写的,如果机器不能运行本程序 可以安装.net 平台库
  • 要在ASP.Net中把数据库中的数据导入Excel中有如下的几种方法:一. RenderControl的方法 1*2*//byXiaoYin[10/22/2006]3*/4usingSystem;5usingSystem.Data;6usingSystem.Configuration;7usingSystem.Web;8...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,664
精华内容 1,065
关键字:

数据库从导入excel