精华内容
下载资源
问答
  • Kettle实现从数据库中提取数据到Excel

    千次阅读 2019-06-18 19:20:00
    因为有个日常提数,工作日每天都要从数据库中提取数据,转换为excel,再以邮件的形式发给用户。 刚好近期同事在研究使用kettle自动提数且完成邮件的发送,觉得很实用又挺有意思的就学了一下这个技能~ 首先我们...

    因为有个日常提数,工作日每天都要从数据库中提取数据,转换为excel,再以邮件的形式发给用户。

    刚好近期同事在研究使用kettle自动提数且完成邮件的发送,觉得很实用又挺有意思的就学了一下这个技能~

     

    首先我们需要新建 转换 

    转换: 可以将数据从数据库中提取到excel中 

     

    然后我们如果想要定时提取数据的话,可以新建 作业

    作业: 可以定时执行转换任务,然后还可以将发送邮件耶~ (不过这个技能我还不是很熟悉,等我熟悉了再更新嘻嘻)

     

    一 、 新建转换

    1.点击 + 号 ,也就是新建 ,然后选择 转换

     

    2. 从 核心对象 视图切换为 主对象树 , 然后开始建立我们的数据库连接

    双击 DB连接,会出现下图标记的 3 弹窗

    填写数据库连接信息,我这里选择连接oracle数据库,必要填写的信息为红色标记框所标记的  数据库ip  数据库名 端口号 用户名 密码

     

     

    3.数据库信息填写完后我们可以点击测试按钮,看看是否能正常连接(提示为 正确连接到数据库【test】,表示信息填写没有问题)

     

    4. 切换视图: 主对象树  切换到 核心对象,我们开始设立我们的输入与输出

     

     

     5. 输入 : 我们 从输入的子菜单中选择  表输入

    双击 表输入,会在右侧出现 表输入图标

    双击右侧表输入图标,再次出现 下图标记4出现的弹窗

     

     

    6. 在弹窗中,我们开始定义输入相关信息啦

    关于sql语句,我们还有一点需要注意,就是日期形式的数据需要定义一下,不然导出的数据就会数值类型啦(49165..类似的)

    oracle: to_char('2019-05-05','yyyy-MM-dd')

    mysql: DATE_FORMAT('2019-05-05',''%Y-%m-%d')

     

    7. 输入定义好后,我们开始定义输出啦。 这里我们选择以excel的形式输出数据

    选择核心对象下的 输出,双击输出下的子菜单 Microsoft Excel输出 ,会出现右侧的输出图标

    双击右侧的输出图标,出现右侧 5标记的弹窗信息

     

    8.定义详细的输出

    选定输出文件的位置,如果不写绝对路径则会输出在 kettle启动文件 Sqoon.bat的统计目录下

    下面记得选中Excel 2007 and above

    最后点击确定

     

    9.点击执行按钮,然后就根据提示选择 保存

     

    10. 执行转换

     

     11.执行成功后,我们回到桌面就会看到刚刚保存的文件啦~

     

    二、新建 作业

    1.点击 + 号,然后选择 作业

     

     

    2.选择通用, START (双击,出现右侧开始图标)

     

    3.在 START里面定义 怎么执行(我这里定义为每天9点执行)

     

     

    4.双击通用下的 转换

     

    5.配置转换相关信息

    选中我们刚刚配置好的转换信息(保存位置看你自己之前保存在哪里哦,我是放在了桌面~) ,最后选择确定即可

     

    6.点击执行,会要求我们先保存此次编辑的 作业信息 ,如下图

     

    7. 保存好后,我们可以再次启动,运行啦~  (其实还可以导入文件 test.kjb)

     

    最后提供一个发送邮件的 testzip.kjb  示例 (可直接使用kettle打开,更改邮件服务配置信息即可运行)

    <?xml version="1.0" encoding="UTF-8"?>
    <job>
      <name>testzip</name>
      <description />
      <extended_description />
      <job_version />
      <directory>/</directory>
      <created_user>-</created_user>
      <created_date>2019/06/17 11:35:43.098</created_date>
      <modified_user>-</modified_user>
      <modified_date>2019/06/17 11:35:43.098</modified_date>
      <parameters>
        </parameters>
      <slaveservers>
        </slaveservers>
      <job-log-table>
        <connection />
        <schema />
        <table />
        <size_limit_lines />
        <interval />
        <timeout_days />
        <field>
          <id>ID_JOB</id>
          <enabled>Y</enabled>
          <name>ID_JOB</name>
        </field>
        <field>
          <id>CHANNEL_ID</id>
          <enabled>Y</enabled>
          <name>CHANNEL_ID</name>
        </field>
        <field>
          <id>JOBNAME</id>
          <enabled>Y</enabled>
          <name>JOBNAME</name>
        </field>
        <field>
          <id>STATUS</id>
          <enabled>Y</enabled>
          <name>STATUS</name>
        </field>
        <field>
          <id>LINES_READ</id>
          <enabled>Y</enabled>
          <name>LINES_READ</name>
        </field>
        <field>
          <id>LINES_WRITTEN</id>
          <enabled>Y</enabled>
          <name>LINES_WRITTEN</name>
        </field>
        <field>
          <id>LINES_UPDATED</id>
          <enabled>Y</enabled>
          <name>LINES_UPDATED</name>
        </field>
        <field>
          <id>LINES_INPUT</id>
          <enabled>Y</enabled>
          <name>LINES_INPUT</name>
        </field>
        <field>
          <id>LINES_OUTPUT</id>
          <enabled>Y</enabled>
          <name>LINES_OUTPUT</name>
        </field>
        <field>
          <id>LINES_REJECTED</id>
          <enabled>Y</enabled>
          <name>LINES_REJECTED</name>
        </field>
        <field>
          <id>ERRORS</id>
          <enabled>Y</enabled>
          <name>ERRORS</name>
        </field>
        <field>
          <id>STARTDATE</id>
          <enabled>Y</enabled>
          <name>STARTDATE</name>
        </field>
        <field>
          <id>ENDDATE</id>
          <enabled>Y</enabled>
          <name>ENDDATE</name>
        </field>
        <field>
          <id>LOGDATE</id>
          <enabled>Y</enabled>
          <name>LOGDATE</name>
        </field>
        <field>
          <id>DEPDATE</id>
          <enabled>Y</enabled>
          <name>DEPDATE</name>
        </field>
        <field>
          <id>REPLAYDATE</id>
          <enabled>Y</enabled>
          <name>REPLAYDATE</name>
        </field>
        <field>
          <id>LOG_FIELD</id>
          <enabled>Y</enabled>
          <name>LOG_FIELD</name>
        </field>
        <field>
          <id>EXECUTING_SERVER</id>
          <enabled>N</enabled>
          <name>EXECUTING_SERVER</name>
        </field>
        <field>
          <id>EXECUTING_USER</id>
          <enabled>N</enabled>
          <name>EXECUTING_USER</name>
        </field>
        <field>
          <id>START_JOB_ENTRY</id>
          <enabled>N</enabled>
          <name>START_JOB_ENTRY</name>
        </field>
        <field>
          <id>CLIENT</id>
          <enabled>N</enabled>
          <name>CLIENT</name>
        </field>
      </job-log-table>
      <jobentry-log-table>
        <connection />
        <schema />
        <table />
        <timeout_days />
        <field>
          <id>ID_BATCH</id>
          <enabled>Y</enabled>
          <name>ID_BATCH</name>
        </field>
        <field>
          <id>CHANNEL_ID</id>
          <enabled>Y</enabled>
          <name>CHANNEL_ID</name>
        </field>
        <field>
          <id>LOG_DATE</id>
          <enabled>Y</enabled>
          <name>LOG_DATE</name>
        </field>
        <field>
          <id>JOBNAME</id>
          <enabled>Y</enabled>
          <name>TRANSNAME</name>
        </field>
        <field>
          <id>JOBENTRYNAME</id>
          <enabled>Y</enabled>
          <name>STEPNAME</name>
        </field>
        <field>
          <id>LINES_READ</id>
          <enabled>Y</enabled>
          <name>LINES_READ</name>
        </field>
        <field>
          <id>LINES_WRITTEN</id>
          <enabled>Y</enabled>
          <name>LINES_WRITTEN</name>
        </field>
        <field>
          <id>LINES_UPDATED</id>
          <enabled>Y</enabled>
          <name>LINES_UPDATED</name>
        </field>
        <field>
          <id>LINES_INPUT</id>
          <enabled>Y</enabled>
          <name>LINES_INPUT</name>
        </field>
        <field>
          <id>LINES_OUTPUT</id>
          <enabled>Y</enabled>
          <name>LINES_OUTPUT</name>
        </field>
        <field>
          <id>LINES_REJECTED</id>
          <enabled>Y</enabled>
          <name>LINES_REJECTED</name>
        </field>
        <field>
          <id>ERRORS</id>
          <enabled>Y</enabled>
          <name>ERRORS</name>
        </field>
        <field>
          <id>RESULT</id>
          <enabled>Y</enabled>
          <name>RESULT</name>
        </field>
        <field>
          <id>NR_RESULT_ROWS</id>
          <enabled>Y</enabled>
          <name>NR_RESULT_ROWS</name>
        </field>
        <field>
          <id>NR_RESULT_FILES</id>
          <enabled>Y</enabled>
          <name>NR_RESULT_FILES</name>
        </field>
        <field>
          <id>LOG_FIELD</id>
          <enabled>N</enabled>
          <name>LOG_FIELD</name>
        </field>
        <field>
          <id>COPY_NR</id>
          <enabled>N</enabled>
          <name>COPY_NR</name>
        </field>
      </jobentry-log-table>
      <channel-log-table>
        <connection />
        <schema />
        <table />
        <timeout_days />
        <field>
          <id>ID_BATCH</id>
          <enabled>Y</enabled>
          <name>ID_BATCH</name>
        </field>
        <field>
          <id>CHANNEL_ID</id>
          <enabled>Y</enabled>
          <name>CHANNEL_ID</name>
        </field>
        <field>
          <id>LOG_DATE</id>
          <enabled>Y</enabled>
          <name>LOG_DATE</name>
        </field>
        <field>
          <id>LOGGING_OBJECT_TYPE</id>
          <enabled>Y</enabled>
          <name>LOGGING_OBJECT_TYPE</name>
        </field>
        <field>
          <id>OBJECT_NAME</id>
          <enabled>Y</enabled>
          <name>OBJECT_NAME</name>
        </field>
        <field>
          <id>OBJECT_COPY</id>
          <enabled>Y</enabled>
          <name>OBJECT_COPY</name>
        </field>
        <field>
          <id>REPOSITORY_DIRECTORY</id>
          <enabled>Y</enabled>
          <name>REPOSITORY_DIRECTORY</name>
        </field>
        <field>
          <id>FILENAME</id>
          <enabled>Y</enabled>
          <name>FILENAME</name>
        </field>
        <field>
          <id>OBJECT_ID</id>
          <enabled>Y</enabled>
          <name>OBJECT_ID</name>
        </field>
        <field>
          <id>OBJECT_REVISION</id>
          <enabled>Y</enabled>
          <name>OBJECT_REVISION</name>
        </field>
        <field>
          <id>PARENT_CHANNEL_ID</id>
          <enabled>Y</enabled>
          <name>PARENT_CHANNEL_ID</name>
        </field>
        <field>
          <id>ROOT_CHANNEL_ID</id>
          <enabled>Y</enabled>
          <name>ROOT_CHANNEL_ID</name>
        </field>
      </channel-log-table>
      <pass_batchid>N</pass_batchid>
      <shared_objects_file />
      <entries>
        <entry>
          <name>Zip 压缩文件</name>
          <description />
          <type>ZIP_FILE</type>
          <zipfilename>C:\Users\S0111\Desktop\最新运营中心KPI20190615.zip</zipfilename>
          <compressionrate>1</compressionrate>
          <ifzipfileexists>0</ifzipfileexists>
          <wildcard />
          <wildcardexclude />
          <sourcedirectory>D:\DEV_TOOLS\kettle\pdi-ce-7.1.0.0-12\data-integration\网上保单贷款2019-06-18.xlsx</sourcedirectory>
          <movetodirectory />
          <afterzip>0</afterzip>
          <addfiletoresult>Y</addfiletoresult>
          <isfromprevious>N</isfromprevious>
          <createparentfolder>Y</createparentfolder>
          <adddate>N</adddate>
          <addtime>N</addtime>
          <SpecifyFormat>N</SpecifyFormat>
          <date_time_format>yyyy/MM/dd HH:mm:ss</date_time_format>
          <createMoveToDirectory>N</createMoveToDirectory>
          <include_subfolders>N</include_subfolders>
          <stored_source_path_depth>1</stored_source_path_depth>
          <parallel>N</parallel>
          <draw>Y</draw>
          <nr>0</nr>
          <xloc>368</xloc>
          <yloc>160</yloc>
        </entry>
        <entry>
          <name>START</name>
          <description />
          <type>SPECIAL</type>
          <start>Y</start>
          <dummy>N</dummy>
          <repeat>N</repeat>
          <schedulerType>0</schedulerType>
          <intervalSeconds>0</intervalSeconds>
          <intervalMinutes>60</intervalMinutes>
          <hour>12</hour>
          <minutes>0</minutes>
          <weekDay>1</weekDay>
          <DayOfMonth>1</DayOfMonth>
          <parallel>N</parallel>
          <draw>Y</draw>
          <nr>0</nr>
          <xloc>192</xloc>
          <yloc>176</yloc>
        </entry>
        <entry>
          <name>添加文件到结果文件中</name>
          <description />
          <type>ADD_RESULT_FILENAMES</type>
          <arg_from_previous>Y</arg_from_previous>
          <include_subfolders>N</include_subfolders>
          <delete_all_before>N</delete_all_before>
          <fields>
            <field>
              <name>C:\Users\Administrator\Desktop\报表平台\kettle每周提数</name>
              <filemask>*.zip</filemask>
            </field>
          </fields>
          <parallel>N</parallel>
          <draw>Y</draw>
          <nr>0</nr>
          <xloc>528</xloc>
          <yloc>176</yloc>
        </entry>
        <entry>
          <name>发送邮件</name>
          <description />
          <type>MAIL</type>
          <server>11.22.33.44</server>
          <port>25</port>
          <destination>duanfeixia@chinalife.com.hk</destination>
          <destinationCc />
          <destinationBCc />
          <replyto>xubo@chinalife.com.hk</replyto>
          <replytoname />
          <subject>嗯嗯嗯嗯</subject>
          <include_date>N</include_date>
          <contact_person />
          <contact_phone />
          <comment>test mail</comment>
          <include_files>Y</include_files>
          <zip_files>N</zip_files>
          <zip_name />
          <use_auth>N</use_auth>
          <use_secure_auth>N</use_secure_auth>
          <auth_user />
          <auth_password>Encrypted </auth_password>
          <only_comment>Y</only_comment>
          <use_HTML>N</use_HTML>
          <use_Priority>N</use_Priority>
          <encoding>UTF-8</encoding>
          <priority>normal</priority>
          <importance>normal</importance>
          <sensitivity>normal</sensitivity>
          <secureconnectiontype>SSL</secureconnectiontype>
          <replyToAddresses />
          <filetypes>
            <filetype>GENERAL</filetype>
          </filetypes>
          <embeddedimages>
          </embeddedimages>
          <parallel>N</parallel>
          <draw>Y</draw>
          <nr>0</nr>
          <xloc>672</xloc>
          <yloc>176</yloc>
        </entry>
      </entries>
      <hops>
        <hop>
          <from>START</from>
          <to>Zip 压缩文件</to>
          <from_nr>0</from_nr>
          <to_nr>0</to_nr>
          <enabled>Y</enabled>
          <evaluation>Y</evaluation>
          <unconditional>Y</unconditional>
        </hop>
        <hop>
          <from>添加文件到结果文件中</from>
          <to>发送邮件</to>
          <from_nr>0</from_nr>
          <to_nr>0</to_nr>
          <enabled>Y</enabled>
          <evaluation>Y</evaluation>
          <unconditional>N</unconditional>
        </hop>
        <hop>
          <from>Zip 压缩文件</from>
          <to>添加文件到结果文件中</to>
          <from_nr>0</from_nr>
          <to_nr>0</to_nr>
          <enabled>Y</enabled>
          <evaluation>Y</evaluation>
          <unconditional>N</unconditional>
        </hop>
      </hops>
      <notepads>
      </notepads>
    </job>
    

      

     ps: 详细示例请从github中下载源码信息~ (打开查看详情,需要本机已安装kettle)

    github地址: https://github.com/DFX339/kettle_operate 

    转载于:https://www.cnblogs.com/DFX339/p/11047047.html

    展开全文
  • 从Excel中提取数据显示richtextbox中,若要保存到数据库,仅需去掉代码注释即可
  • 1. 首先表数据基本有一个表头,表头下是数据。这就要求我们必须知道表头的那一列对应哪个数据库字段,但是IBATIS插入都是List结构 也就是说T类型已知,要知道表头的那一列对应那一个PO属性。 方法如下: import ...

    1. 首先表数据基本有一个表头,表头下是数据。这就要求我们必须知道表头的那一列对应哪个数据库字段,但是IBATIS插入都是List<T>结构

     

    也就是说T类型已知,要知道表头的那一列对应那一个PO属性。

     

    方法如下:

     

     

    其次就是要搜索数据了!

     

     

    其中一个实现类为插入部门数据。

     

    写一个测试

     

    数据提取出就可以使用批量插入方法了!

    展开全文
  • 用一个Excel表格做数据库,在另一个Excel表格中输入数据库中的某一个数据,调取全部数据第2个表的A2输入=index(数据库!a:a,match($d2,数据库!$d:$d,))公式右拉C列E列输入=index(数据库!e:e,match($d2,数据库!$d:$d...

    用一个Excel表格做数据库,在另一个Excel表格中输入数据库中的某一个数据,调取全部数据

    第2个表的A2输入

    =index(数据库!a:a,match($d2,数据库!$d:$d,))

    公式右拉到C列

    E列输入

    =index(数据库!e:e,match($d2,数据库!$d:$d,))

    如何将Excel表格中的数据导入到sql数据库里已经存在的表里,注意是已经建好的?

    insert into tablename

    SELECT *

    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

    'Data Source="c:\temp1.xls";User ID=;Password=;Extended properties=Excel 5.0')...[Sheet1$]

    注意如边数据类型不需要用cast或convert转换数据类型。

    这是在查询器中执直接导入的脚本

    sql2000直接执行即可,sql2005以上的需把外围配置打开(sql菜单里就有)

    insert into tablename --这里输入你要导入的表

    SELECT * --这里可以设置需要的execl中的字段

    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',--这个是打开数据源,不用改

    'Data Source="c:\temp1.xls";--这里设置你的execl存放的路径和文件名

    User ID=;Password=;Extended properties=Excel 5.0')--这里也不用改,标准格式

    ...[Sheet1$]--这里设置execl的工作表名,一般没改过的话execl中的工作表默认三个

    --Sheet1,Sheet2,Sheet3,注意别把$忘写了。

    Excel表格怎样才能做为一个小型的数据库来使用

    ”数据“菜单-》”有效性“-择“序列”-》设置序列即可。

    参考这里:

    http://wenku.baidu.com/view/b908b40bf78a6529647d53f1.html

    求助用python从数据库取数据动态生成表格的方法

    一、可使用三方库

    python中处理excel表格,常用的库有xlrd(读excel)表、xlwt(写excel)表、openpyxl(可读写excel表)等。xlrd据较大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库。介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改现有excel表格内容的功能。一般只能将原excel中的内容读出、做完处理后,再写入一个新的excel文件。

    二、常见问题

    使用python处理excel表格时,发现两个个比较难缠的问题:unicode编码和excel中记录的时间。

    因为python的默认字符编码都为unicode,所以打印从excel中读出的中文或读取中文名的excel表或sheet时,程序提示错误UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。这是由于在windows中,中文使用了gb2312编码方式,python将其当作unicode和ascii来解码都不正确才报出的错误。使用VAR.encode('gb2312')即可解决打印中文的问题。(很奇怪,有的时候虽然能打印出结果,但显示的不是中文,而是一堆编码。)若要从中文文件名的excel表中读取数据,可在文件名前加‘u’表示将该中文文件名采用unicode编码。

    有excel中,时间和日期都使用浮点数表示。可看到,当‘2013年3月20日’所在单元格使用‘常规’格式表示后,内容变为‘41353’;当其单元格格式改变为日期后,内容又变为了‘2013年3月20日’。而使用xlrd读出excel中的日期和时间后,得到是的一个浮点数。所以当向excel中写入的日期和时间为一个浮点数也不要紧,只需将表格的表示方式改为日期和时间,即可得到正常的表示方式。excel中,用浮点数1表示1899年12月31日。

    三、常用函数

    以下主要介绍xlrd、xlwt、datetime中与日期相关的函数。

    import xlrd

    import xlwt

    from datetime

    def testXlrd(filename):

    book=xlrd.open_workbook(filename)

    sh=book.sheet_by_index(0)

    print "Worksheet name(s): ",book.sheet_names()[0]

    print 'book.nsheets',book.nsheets

    print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols

    print 'A1:',sh.cell_value(rowx=0,colx=1)

    #如果A3的内容为中文

    print 'A2:',sh.cell_value(0,2).encode('gb2312')

    def testXlwt(filename):

    book=xlwt.Workbook()

    sheet1=book.add_sheet('hello')

    book.add_sheet('word')

    sheet1.write(0,0,'hello')

    sheet1.write(0,1,'world')

    row1 = sheet1.row(1)

    row1.write(0,'A2')

    row1.write(1,'B2')

    sheet1.col(0).width = 10000

    sheet2 = book.get_sheet(1)

    sheet2.row(0).write(0,'Sheet 2 A1')

    sheet2.row(0).write(1,'Sheet 2 B1')

    sheet2.flush_row_data()

    sheet2.write(1,0,'Sheet 2 A3')

    sheet2.col(0).width = 5000

    sheet2.col(0).hidden = True

    book.save(filename)

    if __name__=='__main__':

    testXlrd(u'你好。xls')

    testXlwt('helloWord.xls')

    base=datetime.date(1899,12,31).toordinal()

    tmp=datetime.date(2013,07,16).toordinal()

    print datetime.date.fromordinal(tmp base-1).weekday()

    如何在excel表格中读取sql数据库数据

    excel程带的外部数据连接功能,可以连接sql服务器。具体步骤为:

    1、选择【数据】选项卡,在【获取外部数据】分组,找到【自其他来源】。

    2、单击【自其他来源】按钮,打开【选择来源】下拉菜单。

    3、选择【来自sql

    server】打开【数据连接向导】对话框。

    4、填写服务器名称、登录的用户名及密码等信息,即可成功连接。

    展开全文
  • 用python从数据库中到数据后,写入excel中做成自动报表,ExcelWrite默认的格式一般来说都比较丑,但workbook提供可以设置自定义格式,简单记录个demo,供初次使用者参考。一、 取几列数据长下面这样,数字我随便编...

    用python从数据库中取到数据后,写入excel中做成自动报表,ExcelWrite默认的格式一般来说都比较丑,但workbook提供可以设置自定义格式,简单记录个demo,供初次使用者参考。

    一、 取几列数据长下面这样,数字我随便编的,不用在意:

    二、ExcelWriter写入后默认格式长下面这样,字体丑,宽度不够,没有百分比格式:

    三、设置格式后保存结果,好看多了:

    四、好了,实现在下面代码里有注释

    # -*- coding: utf-8 -*-

    import pandas as pd

    import sys

    reload(sys)

    sys.setdefaultencoding('utf8')

    from mlutil.database import MySQLDB

    from datetime import datetime, timedelta

    def report():

    # 1.取数据

    m = MySQLDB('/data/wowo/password.p', 'mysql')

    m.connect()

    df1 = pd.DataFrame(m.query('select * from table1'))

    df1 = df1[[u'app_date',

    u'cust_cnt',

    u'app_cnt',

    u'overdue_amt',

    u'overdue_rate',

    ]]

    df1.sort_values(by='app_date', ascending=False, inplace=True)

    df1 = df1.set_index(u'app_date')

    df1.loc[u'全部'] = df1.apply(lambda x: x.sum())

    df1.columns = [u'人数',

    u'交易数',

    u'逾期金额',

    u'逾期率']

    df1 = df1.reset_index()

    # 2.保存至excel文件

    t = datetime.now().date() - timedelta(days=1)

    writer = pd.ExcelWriter(

    u'/home/wowo/daily_report/测试_%d%02d%02d.xlsx' % (t.year, t.month, t.day))

    workbook = writer.book

    # 3.设置格式

    fmt = workbook.add_format({"font_name": u"微软雅黑"})

    percent_fmt = workbook.add_format({'num_format': '0.00%'})

    amt_fmt = workbook.add_format({'num_format': '#,##0'})

    border_format = workbook.add_format({'border': 1})

    note_fmt = workbook.add_format(

    {'bold': True, 'font_name': u'微软雅黑', 'font_color': 'red', 'align': 'left', 'valign': 'vcenter'})

    date_fmt = workbook.add_format({'bold': False, 'font_name': u'微软雅黑', 'num_format': 'yyyy-mm-dd'})

    date_fmt1 = workbook.add_format(

    {'bold': True, 'font_size': 10, 'font_name': u'微软雅黑', 'num_format': 'yyyy-mm-dd', 'bg_color': '#9FC3D1',

    'valign': 'vcenter', 'align': 'center'})

    highlight_fmt = workbook.add_format({'bg_color': '#FFD7E2', 'num_format': '0.00%'})

    # 4.写入excel

    l_end = len(df1.index) + 2

    df1.to_excel(writer, sheet_name=u'测试页签', encoding='utf8', header=False, index=False, startcol=0, startrow=2)

    worksheet1 = writer.sheets[u'测试页签']

    for col_num, value in enumerate(df1.columns.values):

    worksheet1.write(1, col_num, value, date_fmt1)

    # 5.生效单元格格式

    # 增加个表格说明

    worksheet1.merge_range('A1:B1', u'测试情况统计表', note_fmt)

    # 设置列宽

    worksheet1.set_column('A:E', 15, fmt)

    # 有条件设定表格格式:金额列

    worksheet1.conditional_format('B3:E%d' % l_end, {'type': 'cell', 'criteria': '>=', 'value': 1, 'format': amt_fmt})

    # 有条件设定表格格式:百分比

    worksheet1.conditional_format('E3:E%d' % l_end,

    {'type': 'cell', 'criteria': '<=', 'value': 0.1, 'format': percent_fmt})

    # 有条件设定表格格式:高亮百分比

    worksheet1.conditional_format('E3:E%d' % l_end,

    {'type': 'cell', 'criteria': '>', 'value': 0.1, 'format': highlight_fmt})

    # 加边框

    worksheet1.conditional_format('A1:E%d' % l_end, {'type': 'no_blanks', 'format': border_format})

    # 设置日期格式

    worksheet1.conditional_format('A3:A62', {'type': 'no_blanks', 'format': date_fmt})

    # 6.保存

    writer.save()

    if __name__ == '__main__':

    report()

    展开全文
  • 因为业务的需要,我们经常需要在数据库或者excel中提取数据,还需要对数据做相应的操作,有时候需要把从数据库中取出的数据放入txt里,其实放入excel也是一样,因为txt可以导入到excel中下文也会提到。基于这种需求...
  • 很多时候我们需要从数据库中取出数据然后放置到Excel中,来进行数据处理和分析。下面给大家讲两种常用的办法来获取数据。方法一Step01数据->自其它来源->来自SQL ServerStep02输入服务器名称->选择登录凭据...
  • Java 实现 Excel数据库数据转换

    千次阅读 2018-08-22 15:51:35
    一、准备 (一)环境 需要用到下面两个jar包,可以自行网上下载或者我提供...二、数据库中数据导入 Excel (一)原理 通过调用工具类,先判断在服务器中指定的文件夹中有没有存在同名的 excle 表,有的话...
  • MySQL中查询数据并且...例如:这次我们逆着来,MySQL数据库中取数,并保存到Excel文件中。(学到的东西,要会举一反三嘛,嘿嘿) 当然还有更高级的,每小时定时的把数据取出来,存到Excel文件中,并用python操作Exc
  • java web程序如何将读取的excel表格里的数据插入...以下步骤供参考:先放一个GridView控件(GridView1)控件在设计的网页上然后用代码导入Excel表格内容, 代码示例(未经测试):try {string MyExcel = "c:\myExcelSheet...
  • 该代码的作用是: 就像标题所说的那样,该代码能够提取所有表以及来自任何给定数据库数据! 我在网上搜索像这样的程序,但没有遇到任何(免费)版本。 所以我决定自己写。 若要使此代码起作用,您需要通过在项目...
  • 【Flask】从Excel中批量导入数据

    千次阅读 2016-11-28 20:43:45
    在Flask开发需要批量导入数据,数据是用Excel保存的。所以在网上搜索了下资料,提取Excel里的数据可以使用xlrd包。这篇文章主要是记录Flask从Excel批量导入数据到数据库的方法。
  • 项目经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel数据提取到数据库的操作,其实实现起来很简单。以下是小菜鸟我的实现思路:1、JSP页面+Struts2实现文件上传,把定制...
  • oracle SQL的文件导出数据到EXCEL中BMP ? dmp吧,这个是Oracle出文件。据我所知,应该没有办法dmp文件中提取数据。应该将dmp文件导入(恢复)到Oracle数据库中,然后再使用普通的sql语句进行检索,通过pl/sql dev...
  • 今天我们来讲解一个比较简单的案例,使用openpyxl从Excel中提取指定的数据并生成新的文件,之后进一步批量自动化实现这个功能,通过本例可以学的知识点:openpyxl模块的运用glob模块建立批处理数据源:阿里云天池的...
  • 和保存到Excel的主要区别是,可以先将爬取到的数据保存在Python的二维列表,然后一次性写入SQLite数据库,Python的二维列表的数据容量非常巨大,就是内存安全性来说,不是很严谨。 以下是代码: # -*- coding...
  • 在做机房收费系统的时候,许多窗体用到的一个功能,就是将从数据库中提取出来的数据导出到Excel中。  首先,引用Microsoft Excel 14.0 Object Library  然后,写代码   Public Sub OutDataToExcel(Flex As ...
  • 本篇文章主要介绍了python技能之导出excel的实例代码,小编觉得挺不错...从数据库或者现有的文本文件中提取符合要求的数据,做一个二次处理,处理完成后的数据最终存储到excel表格中供其他部门的人继续二次分析。在...
  • 把 情况简写 列ZF_白云区 复制 ...在excel中提取第一部分的房型数据 =LEFT(A2,FIND("|",A2,1)-1) 之后,把整租部分的信息提取 =MID(A2,FIND("|",A2,1)+1,FIND("|",A2,FIND("|",A2,1)+1)-FIND("|",A2,1)-1) ...
  • 从数据库或者现有的文本文件中提取符合要求的数据,做一个二次处理,处理完成后的数据最终存储到excel表格中供其他部门的人继续二次分析。 在这里Excel作为一个必不可少桥梁,合适的工具和方法可以避免我们将处理完...
  • 从数据库或者现有的文本文件中提取符合要求的数据,做一个二次处理,处理完成后的数据最终存储到excel表格中供其他部门的人继续二次分析。在这里Excel作为一个必不可少桥梁,合适的工具和方法可以避免我们将处理完的...
  • Excel数据平台

    2015-03-25 19:51:33
    提取数据公式,可以以往所有单据中提取符合要求的数据,而回写公式则可以有目的的对以往单据进行修改补充,使数据更加正确完善。而保存的数据都是存储在数据库中,从而可以最大限度发掘数据的价值。 三、功能...
  • VBA 使用Excel数据库:行转列

    千次阅读 2016-06-07 11:34:36
    最近工作中有需求,要从Excel中提取一些统计信息,因为需求变动可能比较频繁,所以用VBA来做了。调试数据操作部分颇费周折,涉及行转列问题,特记录一下。
  • (由于工作要求需要爬虫四十天天气预报并保存到Excel,源网页:http://www.weather.com.cn/ 中国天气网,get 接口 js 提取) (插入两种数据库,mongoDB... 2、然后需要从数据库中保存一份Excel做透视图就用到了mon...
  • 首先将Excel另存为.csv文件。...在PHPMYADMIN的左边点一下该表,,在右边的最下面找到“文本文件中提取数据,插入表 ” 点它。字符集选latin1_bin 选择相应的文件,除了将分割字段的字符默认的...
  • // 从数据库中提取数据保存到Excel中 public void downExcel(HttpServletResponse response, List fwmxList, String fileName) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(...
  • 数据分析第一步,一定是先从数据库提取数据做基本的描述统计分析,整体查看做到心中有数,而80%的描述统计需要用SQL尝试取数后,或放到Excel或其他Tableau等工具,待基本了解数据整体现状之后,才会上模型上算法,去...
  • java实现导出excel最近有个项目涉及到java数据库access提取数据到excel中,我搜索了大概有两种办法一种是poi一种是jxl。下面介绍下这两种方法。POI为apache公司的一个子项目,主要是提供一组操作windows文档的Java...
  • 今天正好有一个数据库导出的文本,有几十万行数据,需要查找相关的客户信息,如果文件行数不多的话用excel筛选下很方便,但这次行数太多,需要分隔成几个文件筛选后再合并,比较麻烦。就想到了宏... 首先确定一个...
  • 飞哥以前给一位朋友,使用Python做一个脚本,完成一个Excel文档中提取数据,然后把提取的数据生成SQL插入语句,最后写入文本文件中。然后,朋友拿这个文本文件在数据库中执行,就可以把数据写入数据库。这个...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 249
精华内容 99
关键字:

从数据库中提取数据到excel