整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSV to SQLConverter方便的数据格式

CSV to SQLConverter方便的数据格式转换工具

SV to SQL Converter是一款文件格式转换工具,用户能够使用这款软件方便的将CSV格式的文件转换为SQL文件进行保存。软件使用方式简单,具有简单的使用界面,并且支持输出为UTF-8或者ANSI两种不同的编码格式,并且能够自定义文件的保存名称。

转载自当游网,原文地址:http://www.3h3.com/soft/218449.html

、前言

在日常运维的过程中,执行脚本,生成excel报表并发送邮件到邮箱是不可避免的,python生成excel的库有很多,这里选择生成csv格式,因为python内置,不需要额外安装模块,而且使用简单。

二、生产CSV代码

# encoding: utf-8
import codecs
import csv
import datetime

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
def to_csv(datas, env):
    headers=['ip', u'操作系统', u'分区属性', u'输出返回', u'执行结果']
    # newline=''避免出现空行
    today=datetime.date.today()
    filename="{}-{}.csv".format(env, today)
    try:
        with open(filename, 'wb') as f:
            f.write(codecs.BOM_UTF8)
            # 标头在这里传入,作为第一行数据
            writer=csv.DictWriter(f, headers)
            writer.writeheader()
            writer.writerows(datas)
    except Exception as e:
        print (u'写入csv错误:' + str(e))
    finally:
        return filename


if __name__=='__main__':
    data=[{"ip": "192.168.1.2", u'操作系统': "LINUX", u'分区属性': u"x86物理机", u'输出返回': "ok", u'执行结果': u"成功"},
            {"ip": "192.168.1.3", u'操作系统': "LINUX", u'分区属性': u"x86物理机", u'输出返回': "error:xxxxxxxxxxx", u'执行结果': u"成功"},
            {"ip": "192.168.1.4", u'操作系统': "LINUX", u'分区属性': u"x86虚拟机", u'输出返回': "ok", u'执行结果': u"成功"},
            {"ip": "192.168.1.5", u'操作系统': "LINUX", u'分区属性': u"x86虚拟机", u'输出返回': "ok", u'执行结果': u"成功"}]
    env="dev"
    to_csv(data, env)

生成的文件:

二、发送邮件代码

oi框架 framework-poi

> 简单、好用且轻量级的海量excel,csv文件导入导出解决方案。解决火狐浏览器中文编码问题。

> 注:excel的合并功能及复杂功能,使用代码实现比较复杂,框架只提供单行的导入导出。

如何使用?

引入Maven依赖或下载jar包

 <dependency>
 <groupId>com.github.fartherp</groupId>
 <artifactId>framework-poi</artifactId>
 <version>3.0.4</version>
 </dependency>

CSV常用例子:

 CSVRead.read(CSVReadTest.class.getResourceAsStream("/a.csv"), new CSVReadDeal<CsvReadDto>() { 
 // 单条数据处理(每一行对应一个javabean)
 public CsvReadDto dealBean(String[] arr) {
 CsvReadDto dto=new CsvReadDto();
 dto.setId(Long.valueOf(arr[0]));
 dto.setName(arr[1]);
 dto.setAge(Integer.valueOf(arr[2])); 
 return dto;
 } 
 // 批量数据处理(可以批量入库)
 public void dealBatchBean(List<CsvReadDto> list) {
 Assert.assertEquals("name1";, list.get(0).getName());
 Assert.assertEquals("name2", list.get(1).getName());
 Assert.assertEquals("name3", list.get(2).getName());
 } 
 // 批量加载多少数据,统一处理(默认1000)
 public int getBatchCount() { 
 return super.getBatchCount();
 } 
 // 从第几行开始加载(默认跳过第一行)
 public int skipLine() { 
 return super.skipLine();
 }
 });

2.CSV文件导出:

 String filename="TEST";
 String[] title=SheetsTitlesEnum.USER_LOGIN_LOG.getTitle();
 List<String[]> bodyList=new ArrayList<>();
 CsvUtil.writeCsvFile(filename, title, bodyList);

3.浏览器下载CSV文件:

 HttpServletResponse response=null;
 HttpServletRequest request=null;
 String filename="TEST";
 String[] title=SheetsTitlesEnum.USER_LOGIN_LOG.getTitle();
 List<String[]> bodyList=new ArrayList<>();
 CsvUtil.writeCsvFile(response, request, filename, title, bodyList);

Excel常用例子:

1.Excel文件导入:

 ExcelRead.read(ExcelReadTest.class.getResourceAsStream("/a.xls"), new ExcelReadDeal<ExcelReadDto>() { 
 // 单条数据处理(每一行对应一个javabean)
 public ExcelReadDto dealBean(Row row) {
 ExcelReadDto dto=new ExcelReadDto();
 dto.setId(new BigDecimal(row.getCell(0).toString()).longValue());
 dto.setName(row.getCell(1).toString());
 dto.setAge(Integer.valueOf(row.getCell(2).toString())); 
 return dto;
 } 
 // 批量数据处理(可以批量入库)
 public void dealBatchBean(List<ExcelReadDto> list) {
 Assert.assertEquals("name1", list.get(0).getName());
 Assert.assertEquals("name2", list.get(1).getName());
 Assert.assertEquals("name3", list.get(2).getName());
 } 
 // 批量加载多少数据,统一处理(默认1000)
 public int getBatchCount() { 
 return super.getBatchCount();
 } 
 // 从第几行开始加载(默认跳过第一行)
 public int skipLine() { 
 return super.skipLine();
 }
 });

2.Excel文件导出:

 String[] title=new String [6];
 title[0]="登录时间";
 title[1]="用户名";
 title[2]="访问端";
 title[3]="版本系统";
 title[4]="登录IP";
 title[5]="状态";
 String fileName="D:\\style1.xls";
 FileExcelWrite.<ExcelDto>build(title, fileName)
 .setLargeDataMode(false)
 .deal(obj -> {
 String[] result=new String[6];
 result[0]=obj.getTime();
 result[1]=obj.getName();
 result[2]=obj.getClient();
 result[3]=obj.getVersion();
 result[4]=obj.getIp();
 result[5]=obj.getStatus() + ""; 
 return result;
 })
 .list(ExcelWriteStyleTest.getList())// 默认情况下导出数据达到excel最大行,自动切换sheet,(xlsx=1048576,xls=65536)
 .list(ExcelWriteStyleTest.getList1())
 .write();

3.Excel文件导出(风格,可以自定义风格):

 Map<String, Object> map=new HashMap<>();
 map.put("quoteCurrency", "ETH");
 map.put("symbol", "USDT_ETH");
 map.put("startTime", "2019-01-09 00:00:00");
 map.put("endTime", "2019-01-09 12:00:00");
 String fileName="D:\\styleInputStream.xls";
 FileExcelWrite.<ExcelDto>build(this.getClass().getResourceAsStream("/c.xls"), fileName)
 .additional(map)
 .deal(new WriteDeal<ExcelDto>() { 
 public String[] dealBean(ExcelDto obj) {
 String[] result=new String[3];
 result[0]=obj.getId() + "";
 result[1]=obj.getName();
 result[2]=obj.getAge() + ""; 
 return result;
 } 
 public int skipLine() { 
 return 4;
 }
 })
 .list(getList())
 .write();

4.浏览器下载Excel文件:

 String[] title=new String [6];
 title[0]="登录时间";
 title[1]="用户名";
 title[2]="访问端";
 title[3]="版本系统";
 title[4]="登录IP";
 title[5]="状态";
 String fileName="D:\\style1.xls";
 HttpServletResponseExcelWrite.<ExcelDto>build(title, fileName, request, response)
 .setLargeDataMode(false)
 .deal(obj -> {
 String[] result=new String[6];
 result[0]=obj.getTime();
 result[1]=obj.getName();
 result[2]=obj.getClient();
 result[3]=obj.getVersion();
 result[4]=obj.getIp();
 result[5]=obj.getStatus() + ""; 
 return result;
 })
 .list(ExcelWriteStyleTest.getList())// 默认情况下导出数据达到excel最大行,自动切换sheet,(xlsx=1048576,xls=65536)
 .list(ExcelWriteStyleTest.getList1())
 .write();

公告模块框架 framework-common

包括各种util,例如:日期DateUtil,BigDecimalUtil等等

压缩框架 framework-compress

提供各种压缩方式
1.bzip2
2.gzip
3.jar
4.tar
5.zip
6.zlib
7.shell命令(gzip,targz)

核心框架 framework-core

1.整合easyui分页功能
2.验证码
3.整合easyui树结构
4.统一前端请求后的返回参数
5.发送邮件,包括html邮件

db操作框架 framework-database

封装操作数据库的基本操作(增删改查)

异常体系框架 framework-exception

1.mysql数据库返回的错误信息,转成可识别信息
2.oracle数据库返回的错误信息,转成可识别信息
3.通用的异常返回的错误信息,转成可识别信息

文件处理框架 framework-file

1.ftp
2.nfs

net框架 framework-net

1.ftp
2.sftp

poi框架 framework-poi

1.csv读取及下载
2.excel读取

加密解密框架 framework-security

1.不可逆:base64,MD5
2.对称密钥:AES,DES,3DES
3.非对称密钥:RSA

framework-filter

1、支持切面过滤
2、和spring环境集成
 配置方式是:
 web.xml 
 <filter>
 <filter-name>frameworkFilter</filter-name>
 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
 <init-param>
 <param-name>targetFilterLifecycle</param-name>
 <param-value>true</param-value>
 </init-param>
 </filter>
 <filter-mapping>
 <filter-name>frameworkFilter</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
 spring 配置文件
 <bean id="frameworkFilter" class="cn.vanskey.filter.web.FrameworkFilterFactoryBean">
 <property name="filters"> //过滤器配置
 <util:map>
 <entry key="myfilter">
 <bean class="com.zrj.pay.cashier.action.demo.MyFilter"/>
 </entry>
 </util:map>
 </property>
 <property name="filterChainDefinitions">
 <value>
 /**=myfilter //过滤器和路径的对应关系
 </value>
 </property>
 </bean>

关注后私信“FrameworkPoi”就会收到详细文档介绍,喜欢的关注下每天会推出更多技术精品。