使用Navicat导入导出表的数据做测试(转载)
当我们对MySQL数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出、导入操作了。Navicat工具正好给我们提供了一个数据表的导入导出功能。
1.导出数据表
Navicat导出数据表的格式很多,增加了对Excel2007以上版本的支持,当设计完一个表后,如果有上百条或更多的数据需要导入mysql数据库时,我们可以先把设计好的数据导出到一个Excel表中,然后按照格式去填充,最后把这些填充完的数据再导入到mysql数据库中。
步骤1:点击【导出向导】,选择表的类型:Excel文件
步骤2:选择导出表的存放位置,将导出的Excel表存放到合适的位置。
步骤3:选择需要导出的栏位,默认选中全部栏位
步骤4:定义附加选项,建议勾选上“包含列的标题”,这样导出的Excel表的数据看起来比较完整。
步骤5:点击【开始】执行导出
导出的数据表如下图所示:
录入数据:
2 导入数据表
在导出的Excel表中,手动的录入一些数据,然后将这个表导入到数据库中。
步骤1:运行【导入向导】,选择导入数据的类型
步骤2:选择文件数据源
步骤3:跳过。
步骤4:给源文件定义一些附加选项,前三个选项一定要填写正确,否则将不能完成正确的导入。
[栏位名行]:数据表字段所在的行位置
[第一个数据行]:导入的数据表中源数据是从第几行开始的
[最后一个数据行]:导入的数据表中源数据是从第几行结束的
步骤5:选择目标表,也可以新建一个表
步骤6:定义源栏位和目标栏位的对应关系,如果目标栏位设置了主键,在这一步中一定要勾选,否则也将无法正常导入数据
步骤7:选择导入模式,如果是新表,我们选择第一项。可以根据具体情况选择不同的选项。这里我们选择第三项。
步骤8:点击【开始】执行导入命令
执行完之后,我们去数据库验证一下:
在上图中我们可以看到所有添加进来的数据,在这个窗口的左下角有一排小按钮值得注意,其中“+”和“-”就是插入和删除一条记录的按钮,如果要添加一条记录,可以将光标停留在最后一行的最后一个值上,然后按“Tab”键即可依次往下添加数据。
Power BI基础知识——转换表和列(下)
转置与Excel的行列转置一样,可以对表进行行列互相转置。反转行反转表的行,使最后一行显示为第一行,与排序不同的是它不排序,而只是将行进行反转显示。计数对当前表中的行进行计数,直接显示行数。转换列对列的转换常见的有数据类型的转换,重命名列名,替换值,填充,透视列和逆透视列等。转换数据类型类似Excel里面的修改数据格式,可以将数据修改成各种你需要的格式,下图是一些常见的可以转换的数据类型。重命名:修改列名替换值:替换选择列中需要被替换的数据填充分为向下填充和向上填充,我们举个具体示例容易理解类似的如果我们点向上填充,结果就是下面这样透视列类似Excel中的透视表,选中某一列后对其他列进行透视透视列有以下几个选项:例如,我们选中城市,对客户进行透视,取客户的数量,结果如下图:逆透视列将除当前未选定列以为所有列转换为属性值对,具体操作如下图:批注表和列的转换可以解决一些关于表和列的常见问题,不管是对列的分组,还是对行的计数,或者是透视列等,都可以很方便的让我们对表里的数据有一个清楚的认识。
Navicat for MySQL使用手记(中)--导入/导出数据表
四:管理和维护数据表和数据库
1. 当我们设计完表以后,肯能投入最多时间的就是优化和维护了Navicat同样给我们提供了一个【维护表】的便捷工具,右键选择表students,在右键菜单靠下的位置有个一个【维护表】的选项,其选项下包括分析表、检查表、优化表、修发表4个命令供我们使用。
图: 8
2. 导出数据表
与phpMyAdmin和Mysql-Front相比,Navicat所导出数据表的格式更多,同时增加了对Excel2007以上版本的支持,当设计完一个表后,如果有上百条或更多的原始数据需要导入MySQL数据库时我们就可以先把设计好的数据导出到一个Excel表中,然后按照格式去填充数据,最后把这些填充完的数据再导入到MySQL数据库中,首先我们看如何使用Navicat导出数据,共分5个步骤。
步骤1:点击【导出向导】命令在步骤1中选择表类型:Excel文件
图: 9
步骤2:选择导出表的存放位置
将导出的Excel表存放到合适的位置,如“我的文档”
图: 10
步骤3:选择导出的需要导出的栏位(列),默认选中全部栏位
图: 11
步骤4:定义附加选项
建议一定要勾选上“包含列的标题”一项,这样在导出的Excel表的数据看起来比较完整。
图: 12
步骤5:完成导出
完成上面的各项设置后,我们点击【开始】按钮执行导出,导出完成后,在[Msg]消息窗中所导出表的类别、位置等信息提示。
图: 13
我们看一下导出的Excel表的内容,,因为在前文的设计表的示例中没有输入数据,所以这里导出的Excel是一个空表,接下来我们手工录入一些数据后演示导入数据表的操作
图: 14
3. 导入数据表
在图14中所示的Excel表中我手动录入了一些数据,现在我把这个表导入到数据库中,导入数据表共有8个步骤,我们一一演示出来
步骤1:运行【导入向导】,选择导入数据的类型
图: 15
步骤2:选择文件数据源
图: 16
步骤3:未知,系统过了步骤2直接进入步骤4,不知道这是不是一个系统的bug,为了和提示框同步,此处省略。
步骤4:给源文件定义一些附加选项
在下图中红色方框内的选项一定要选择正确,否则将不能完成正确的导入。
[栏位名行]:数据表字段所在的行位置(参见图14),这里输入1;
[第一个数据行]:所导入源数据从第几行开始的,我这里输入的是2(参见图14);
[最后一个数据行]:所导入源数据到第几行结束,我这里输入的是6(参见图14)
图: 17
步骤5:选择目标表,也可以新建一个表
图: 18
步骤6:定义源栏位和目标栏位的对应关系,如果目标栏位设置了主键,在这一步中一定要勾选,否则也将无法正常导入数据
图: 19
步骤7:选择导入模式
如果是新表的话呢,我们选择第一项:添加,根据具体情况我们可以选择不同的选项,有兴趣的朋友可以每个都测试一下什么效果
图: 20
步骤8:点击【开始】按钮执行导入命令,导入完成后还会有一个[Msg]的消息提示
图: 21
执行完后,我们到数据库中去验证一下:
图: 22
在图22中我们可以清晰的看到所有添加进来的数据,在这个窗口的左下角有一排小按钮值得注意,其中的“+”和“-”就是插入和删除一条记录的按钮,如果要添加一条记录的话可以将光标停留在最后一行的最后一个值上,然后按“Tab”键即可依次往下添加数据。
本文转自 小孙村长 51CTO博客,原文链接:http://blog.51cto.com/xiaosuncunzhang/680228,如需转载请自行联系原作者
Python学习教程:从Excel到Python最常用的32个Pandas函数(一)
本次的Python学习教程涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入、数据清洗、预处理,以及最常见的数据分类,数据筛选,分类汇总,透视等最常见的操作。
生成数据表
常见的生成数据表的方法有两种,第一种是导入外部数据,第二种是直接写入数据。Excel中的“文件”菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。
Python支持从多种类型的数据导入。在开始使用Python进行数据导入前需要先导入pandas库,为了方便起见,我们也同时导入numpy库.
import numpy as npimport pandas as pd导入外部数据
df=pd.DataFrame(pd.read_csv('name.csv',header=1))df=pd.DataFrame(pd.read_Excel('name.xlsx'))c里面有很多可选参数设置,例如列名称、索引列、数据格式等
直接写入数据
df = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006],"date":pd.date_range('20130102', periods=6),"city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],"age":[23,44,54,32,34,32],"category":['100-A','100-B','110-A','110-C','210-A','130-F'],"price":[1200,np.nan,2133,5433,np.nan,4432]},columns =['id','date','city','category','age','price'])
数据表检查
数据表检查的目的是了解数据表的整体情况,获得数据表的关键信息、数据的概况,例如整个数据表的大小、所占空间、数据格式、是否有空值和重复项和具体的数据内容,为后面的清洗和预处理做好准备。
1.数据维度(行列)
Excel中可以通过CTRL+向下的光标键,和CTRL+向右的光标键来查看行号和列号。Python中使用shape函数来查看数据表的维度,也就是行数和列数。
df.shape2.数据表信息
使用info函数查看数据表的整体信息,包括数据维度、列名称、数据格式和所占空间等信息。
数据表信息
df.info()RangeIndex: 6 entries, 0 to 5Data columns (total 6 columns):id 6 non-null int64date 6 non-null datetime64[ns]city 6 non-null objectcategory 6 non-null objectage 6 non-null int64price 4 non-null float64dtypes: datetime64ns, float64(1), int64(2), object(2)memory usage: 368.0+ bytes3.查看数据格式
Excel中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python中使用dtypes函数来返回数据格式。
Dtypes是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看
查看数据表各列格式
df.dtypesid int64date datetime64[ns]city objectcategory objectage int64price float64dtype: object
查看单列格式
df['B'].dtypedtype('int64')4.查看空值
Excel中查看空值的方法是使用“定位条件”在“开始”目录下的“查找和选择”目录.
Isnull是Python中检验空值的函数
检查数据空值
df.isnull()
检查特定列空值
df['price'].isnull()
5.查看唯一值
Excel中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。
Python中使用unique函数查看唯一值。
查看city列中的唯一值
df['city'].unique()array(['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '], dtype=object)6.查看数据表数值
Python中的Values函数用来查看数据表中的数值
查看数据表的值
df.values
7.查看列名称
Colums函数用来单独查看数据表中的列名称。
查看列名称
df.columnsIndex(['id', 'date', 'city', 'category', 'age', 'price'], dtype='object')8.查看前10行数据
Head函数用来查看数据表中的前N行数据
查看前3行数据
df.head(3)9.查看后10行数据
Tail行数与head函数相反,用来查看数据表中后N行的数据
查看最后3行
df.tail(3)
数据表清洗
本次的Python学习教程介绍对数据表中的问题进行清洗,包括对空值、大小写问题、数据格式和重复值的处理。
1.处理空值(删除或填充)
Excel中可以通过“查找和替换”功能对空值进行处理
Python中处理空值的方法比较灵活,可以使用 Dropna函数用来删除数据表中包含空值的数据,也可以使用fillna函数对空值进行填充。
删除数据表中含有空值的行
df.dropna(how='any')
也可以使用数字对空值进行填充
使用数字0填充数据表中空值
df.fillna(value=0)使用price列的均值来填充NA字段,同样使用fillna函数,在要填充的数值中使用mean函数先计算price列当前的均值,然后使用这个均值对NA进行填充。
使用price均值对NA进行填充
df['price'].fillna(df['price'].mean())Out[8]: 0 1200.01 3299.52 2133.03 5433.04 3299.55 4432.0Name: price, dtype: float64
2.清理空格
字符中的空格也是数据清洗中一个常见的问题
清除city字段中的字符空格
df['city']=df['city'].map(str.strip)3.大小写转换
在英文字段中,字母的大小写不统一也是一个常见的问题。Excel中有UPPER,LOWER等函数,Python中也有同名函数用来解决大小写的问题。
city列大小写转换
df['city']=df['city'].str.lower()
4.更改数据格式
Excel中通过“设置单元格格式”功能可以修改数据格式。
Python中通过astype函数用来修改数据格式。
更改数据格式
df['price'].astype('int')0 12001 32992 21333 54334 32995 4432Name: price, dtype: int325.更改列名称
Rename是更改列名称的函数,我们将来数据表中的category列更改为category-size。
更改列名称
df.rename(columns={'category': 'category-size'})
6.删除重复值
Excel的数据目录下有“删除重复项”的功能
Python中使用drop_duplicates函数删除重复值
df['city']0 beijing1 sh2 guangzhou3 shenzhen4 shanghai5 beijingName: city, dtype: objectcity列中beijing存在重复,分别在第一位和最后一位drop_duplicates()函数删除重复值
删除后出现的重复值
df['city'].drop_duplicates()0 beijing1 sh2 guangzhou3 shenzhen4 shanghaiName: city, dtype: object设置keep='last‘’参数后,与之前删除重复值的结果相反,第一位出现的beijing被删除
删除先出现的重复值
df['city'].drop_duplicates(keep='last')1 sh2 guangzhou3 shenzhen4 shanghai5 beijingName: city, dtype: objec7.数值修改及替换
Excel中使用“查找和替换”功能就可以实现数值的替换
Python中使用replace函数实现数据替换
附#数据替换df['city'].replace('sh', 'shanghai')0 beijing1 shanghai2 guangzhou3 shenzhen4 shanghai5 beijingName: city, d篇幅有限,剩下的函数总结会在下一章Python学习教程中继续为大家更新!不会等太久!
mysql导入excel数据
1、第一步我们得到了一个excel表,里面有很多需要我们导入的数据。
2、删除第1行"准考证号""XXX"....只保留我们需要的数据部分。
3、单击"文件"--"另存为",类型选择为"CSV(逗号分隔)(*.csv)",将excel表另存为csv文档。中间不管提示什么一律"是"就好了...
4、重点!另存为的slyar.csv是可以用记事本或者Editplus等文本编辑器打开的,我们打开来看一下。
可以看到其实csv文档就是txt(即你可以使用自己的txt然后换个后缀名就行),只不过把各个字段之间用","分隔开了而已。既然它是txt文档,那么就涉及到了文件编码的问题!默认保存的文件编码是ANSI,如果你的数据库(数据表)使用UTF-8编码,那么一定要将这个csv文件另存为UTF-8格式!
5、进入phpMyAdmin创建一个表,新建字段,字段名与你要导入的excel表字段关联且顺序相同。太简单,不截图了。
6、在phpMyAdmin中打开你创建的表,在最上面单击"导入"。
7、"导入文件的格式"选择第二个"CSV 使用 LOAD DATA"。
8、"要导入的文件"选择你刚才另存为的csv文件。
9、"字段分隔符"更改为",",就是excel另存为默认选择的"(逗号分隔)",你可以自由选择分隔符,通常出现在你的excel表格数据里有","的情况下。
10、"字段名"是个高级应用,这里的字段名是你数据表里的字段名,它表示你要进行填充的字段,多个字段之间用","隔开。这里为空表示全部填充,并且按顺序填充,多余的数据不要。
10、检查没问题就可以按"执行"了。
11、"导入成功,执行了 1 个查询"。看到这个就表示成功了,如果导入不成功请从头到尾再仔细对照本文重做一次,如果还不行请往下看...
12、某些excel导出的数据可能会变得很奇怪,例如中间会有特殊字符神马神马的,总之如果这个方法不行的话,你还是可以去用我之前写的那个软件...
来源:http://www.slyar.com/blog/phpmyadmin-csv-mysql.html
poi方式写入数据到Excel
在java数据库编程中,常常会用到向excel中读写数据,一方面可以将数据从数据库导出到Excel,进行数据展示,另一方面可以批量的向数据库插入多条数据,这对于软件开发是必不可少的,今天先介绍如何使用java向excel中写入数据,这里以2003版本的excel版本为例,分享我的实战经验。(在后续的经验中会介绍excel数据导出,敬请浏览)
工具/原料
eclipse, java poi的jar包
方法/步骤
1
导入POI的jar包
新建一个项目,在根目录在新建一个lib文件夹,将jar包复制粘贴到lib文件夹后,右键将其添加到项目的build path中,最后的结果如图所示:
步骤阅读
2
编写java类,新建一个实体类,比如我们要导出数据库的有关电脑的信息,那么就建一个Computer实体类,代码如下:
package com.qiang.poi;
public class Computer {
private int id;
private String name;
private String description;
private double price;
private double credit;
public int getId() {
return id;
}
public Computer(int id, String name, String description, double price,
double credit) {
super();
this.id = id;
this.name = name;
this.description = description;
this.price = price;
this.credit = credit;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getCredit() {
return credit;
}
public void setCredit(double credit) {
this.credit = credit;
}
}
3
新建一个写入excel的方法,如write2excel,参数可以后面边写边决定(站在一个不熟悉POI的角度)
public static void write2Excel(){}
4
创建操作Excel的HSSFWorkbook对象
HSSFWorkbook excel= new HSSFWorkbook();
5
创建HSSFSheet对象
Excel中的一个sheet(工作表)对应着java中的一个HSSFSheet对象,利用HSSFWorkbook对象可以创建一个HSSFSheet对象
如:创建一个sheet名为computer的excel
HSSFSheet sheet = excel.createSheet("computer");
6
创建第一行标题信息的HSSFRow对象
我们都知道excel是表格,即由一行一行组成的,那么这一行在java类中就是一个HSSFRow对象,我们通过HSSFSheet对象就可以创建HSSFRow对象
如:创建表格中的第一行(我们常用来做标题的行) HSSFRow firstRow = sheet.createRow(0); 注意下标从0开始
7
创建标题行中的HSSFCell数组
当然,excel中每一行是由若干个单元格,我们常称为cell,它对应着java中的HSSFCell对象
如:创建5个单元格 HSSFCell cells[] = new HSSFCell[5];
//假设我们一行有五列数据
8
创建标题数据,并通过HSSFCell对象的setCellValue()方法对每个单元格进行赋值
既然单元格都准备好了,那最后是不是该填充数据了呀。对的,没错。填充数据之前,得把数据准备好吧,
数据:String[] titles = new String[]{"id","name","description","price","credit"};
插入一句话: 在这个时代,能让机器做的,尽量不让人来做,记住这句话。
好的,继续。现在就通过for循环来填充第一行标题的数据
for (int i = 0; i < 5; i++) {
cells[0] = firstRow.createCell(i);
cells[0].setCellValue(titles[i]);
}
9
数据分析
第一行标题栏创建完毕后,就准备填充我们要写入的数据吧,在java中,面向对象给我们带来的好处在这里正好体现了,没错
把要填写的数据封装在对象中,即一行就是一个对象,n行就是一个对象列表嘛,好的,走起。
创建对象Computer,私有属性id,name,description,price,credit,以及各属性的setter和getter方法,如步骤二所示。
假设我们要写入excel中的数据从数据库查询出来的,最后就生成了一个List<Computer>对象computers
10
数据写入
具体数据有了,又该让机器帮我们干活了,向excel中写入数据。
for (int i = 0; i < computers.size(); i++) {
HSSFRow row = sheet.createRow(i + 1);
Computer computer = computers.get(i);
HSSFCell cell = row.createCell(0);
cell.setCellValue(computer.getId());
cell = row.createCell(1);
cell.setCellValue(computer.getName());
cell = row.createCell(2);
cell.setCellValue(computer.getDescription());
cell = row.createCell(3);
cell.setCellValue(computer.getPrice());
cell = row.createCell(4);
cell.setCellValue(computer.getCredit());
}
11
将数据真正的写入excel文件中
做到这里,数据都写好了,最后就是把HSSFWorkbook对象excel写入文件中了。
OutputStream out = null;
try {
out = new FileOutputStream(file);
excel.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("数据已经写入excel"); //温馨提示
12
看看我的main方法吧
public static void main(String[] args) throws IOException {
File file = new File("test1.xls");
if(!file.exists()){
file.createNewFile();
}
List<Computer> computers = new ArrayList<Computer>();
computers.add(new Computer(1,"宏碁","笔记本电脑",3333,9.0));
computers.add(new Computer(2,"苹果","笔记本电脑,一体机",8888,9.6));
computers.add(new Computer(3,"联想","笔记本电脑,台式机",4444,9.3));
computers.add(new Computer(4, "华硕", "笔记本电脑,平板电脑",3555,8.6));
computers.add(new Computer(5, "注解", "以上价格均为捏造,如有雷同,纯属巧合", 1.0, 9.9));
write2excel(computers, file);
}
13
工程目录及执行main方法后的test1.xls数据展示
步骤阅读
步骤阅读
14
源码分享,computer就不贴了
package com.qiang.poi;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
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 ReadExcel {
public static void main(String[] args) throws IOException {
File file = new File("test1.xls");
if(!file.exists()){
file.createNewFile();
}
List<Computer> computers = new ArrayList<Computer>();
computers.add(new Computer(1,"宏碁","笔记本电脑",3333,9.0));
computers.add(new Computer(2,"苹果","笔记本电脑,一体机",8888,9.6));
computers.add(new Computer(3,"联想","笔记本电脑,台式机",4444,9.3));
computers.add(new Computer(4, "华硕", "笔记本电脑,平板电脑",3555,8.6));
computers.add(new Computer(5, "注解", "以上价格均为捏造,如有雷同,纯属巧合", 1.0, 9.9));
write2excel(computers, file);
}
public static void write2excel(List<Computer> computers,File file) {
HSSFWorkbook excel = new HSSFWorkbook();
HSSFSheet sheet = excel.createSheet("computer");
HSSFRow firstRow = sheet.createRow(0);
HSSFCell cells[] = new HSSFCell[5];
String[] titles = new String[] { "id", "name", "description", "price",
"credit" };
for (int i = 0; i < 5; i++) {
cells[0] = firstRow.createCell(i);
cells[0].setCellValue(titles[i]);
}
for (int i = 0; i < computers.size(); i++) {
HSSFRow row = sheet.createRow(i + 1);
Computer computer = computers.get(i);
HSSFCell cell = row.createCell(0);
cell.setCellValue(computer.getId());
cell = row.createCell(1);
cell.setCellValue(computer.getName());
cell = row.createCell(2);
cell.setCellValue(computer.getDescription());
cell = row.createCell(3);
cell.setCellValue(computer.getPrice());
cell = row.createCell(4);
cell.setCellValue(computer.getCredit());
}
OutputStream out = null;
try {
out = new FileOutputStream(file);
excel.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Office动画技巧集锦
[GIF][Excel 2013]斜线表头的制作[GIF][Excel 2013]VLOOKUP的逆向查询[GIF][Excel 2013]组合图表类型[GIF][Excel 2013]查询某列最后一个数值[GIF][Excel 2013]VLOOKUP模糊查询[GIF][Excel 2013]复制部分内容至多个工作表[GIF][Excel 2013] 动态数据有效性[GIF][Excel 2013] 自定义图表数据标签[GIF][Excel 2013] 克隆图表数据标签[GIF][Excel 2013]条形图逆向排序[GIF][Excel 2013]设置数据透视表打印标题[GIF][Excel 2013]添加计算字段求平均值[GIF][Excel 2013]为数据透视表每项插入空行[GIF][Excel 2013]提取网页中的数据[GIF][Excel 2013]为数据透视表添加切片器[GIF][Excel 2013]修改图表坐标轴刻度[GIF][PowerPoint 2013]利用参考线分页对齐[GIF][Excel 2013]多个数据透视表共享切片器[GIF][Excel 2013]按行排序[GIF][Excel 2013]切片器横向排列[GIF][Excel 2013]隐藏切片器的页眉[GIF][PowerPiont 2013]自制图片动画效果[GIF][Excel 2013] OFFSET实现系列值的创建GIF][Excel 2013]提高数据输入的准确率[GIF][Excel 2013] 快速创建系列值[GIF][Excel 2013]定义名称的妙用(二) 数组填充[GIF][Word 2013]为常用符号添加快捷键[GIF][Excel 2013]定义名称的妙用[GIF][Excel 2013]公式“错误检查”是好帮手[GIF][Excel 2013]Vlookup 多个字段查询[GIF][Excel 2013]利用Vlookup实现星座查询[GIF][Excel 2013]Index函数返回单元格的值[GIF][Excel 2013]按颜色进行“筛选”[GIF][PowerPiont 2013]自制图片动画效果[GIF][Excel 2013]利用COUNTIF统计重复次数[GIF][Excel 2013]提示输入信息(ISBLANK函数)[GIF][Excel 2013]提示输入信息(函数综合应用)[GIF][Excel 2013]按行排序[GIF][Excel 2013]动态引用数据求和[GIF][Excel 2013]利用通配符统计件数[GIF][Excel 2013]关闭数据透视表明细[GIF][Excel 2013]利用INDIRECT引用工作表名[GIF][Excel 2013]SUMIF 函数与连接符“&”求和[GIF][PowerPoint 2013]利用QQ载图达到屏幕取色的效果[GIF][PowerPint 2013]利用隐藏功能区扩大工作空间[GIF][Word 2013]自动更正的另类使用[GIF][Excel 2013]利用“数据透视表”求各部门购买电脑的总数量[GIF][PowerPoint 2013]PPT中的图表的动态演示[GIF][Excel 2013]在具体时间内提取日期[GIF][Excel 2013]快速输入工作日序列[GIF][Excel 2013]自定义快速访问工具栏:数据透视表向导[GIF][PowerPoint 2013]为每页PPT添加LOGO[GIF][Excel 2013]将二维表转化为一维表[GIF][Excel 2013]数据透视表_清除已删除的字段项目[GIF][Excel 2013]隐藏单元格内的公式[GIF][Excel 2013]求排名前三的平均值[GIF][Excel 2013]求指定日期为当月的第几周[GIF][Excel 2013]统计除去重复产品后的个数[GIF][Excel 2013]不更新外部源链接[GIF][Word 2013]为您的超链接添加文字说明[GIF][Excel 2013]快速为数值插入“货币”单位[GIF][Word 2013]快速为文本添加大括号[GIF][Word 2013]使用剪贴板进行替换[GIF][Word\Excel 2013]Word与Excel链接
[GIF][Excel 2013]筛选前三名并从大到小排序
[GIF][PowerPoint 2013]快速创建漂亮相册
[GIF][Word 2013]自动更正的另类使用
[GIF][Excel 2013]单元格自动换行(一)
[GIF][Excel 2013]单元格自动换行(二)
[GIF][Word 2013]快速输入大写中文数字
[GIF][Word 2013]去除自动添加的超链接
[GIF][Word 2013]换页不再频繁敲回车键
[GIF][Word 2013]另类方法复制文本
[GIF][Excel 2013]按汉字笔划进行排序
[GIF][Word 2013]快速改变字母大小写
[GIF][Excel 2103]多条件求和——数学函数SUMIFS
[GIF][Excel 2013]多条件求和——数据库函数DSUM
[GIF][Excel 2013]模糊筛选
[GIF][Excel 2013]单元格内强制换行
[GIF][Excel 2013]筛选上半年数据
[GIF][Excel 2010]自定义排序
[GIF][Excel 2010]进入Excel安全模式
[GIF][Excel 2013]快速输入日期
[GIF][Excel 2013]隔行插入空行
[GIF][Word 2013]为每行进行快速分页
[GIF][Word 2013]公文头实例:双行合一
[GIF][Word 2013]阅读好帮手:自动滚动
[GIF][Excel 2013]根据单元格的值填充相应的背景颜色
[GIF][Excel 2013]利用“数据有效性”创建列表值
[GIF][Word 2013]插入“联机图片”演示
[GIF][Word 2013]可以朗诵的屏幕取词翻译
[GIF][Excel 2013]分类总表至各个工作表
[GIF][Excel 2013]统计数据出现次数
[GIF][Excel 2013]为超过阀值的数据添加底色
[GIF][Excel 2013]删除单元格中的空格
[GIF][Excel 2013]给数值披上时间的外衣
[GIF][Excel 2013]筛选时使序号连续
[GIF][Excel 2013]筛选低于60的名单
[GIF][Excel 2013]提取括号内的文字_技巧法
[GIF][Excel 2013]表格的结构化引用
[GIF][Excel 2013]批量修改Excel中的超链接
[GIF][Excel 2013]将存为文本的数字转换成数字
[GIF][Excel 2013]批量删除图片
[GIF][Excel 2013]设置数据有效性限制输入重复值
[GIF][Excel 2010] 利用条件定位,快速制作工资条
[GIF][Excel 2010] 自动添加小数的两种方法
[GIF][Excel 2013]套用表格格式进行汇总
[GIF][Excel 2013]连接单元格内容(3)——两端对齐
[GIF][Excel 2013]连接单元格内容(2)——PHONETIC函数
[GIF][Excel 2013]连接单元格内容(1)——“&”
[GIF][Excel 2010]新建功能区选项卡
[GIF][Excel 2010]利用Large函数求前三名
[GIF][Excel 2010]利用Rank函数对数据进行排名
[GIF][Excel 2013]VBA实例 为所有工作表添加表头
[GIF][Excel 2010]通过条件关键字快速找到数据
[GIF][Word 2010]为Word文档添加导航
[GIF][Word 2010]为Word文档添加目录
[GIF][Excel 2010]Enter的转向设置
[GIF][PowerPoint 2010]自定义修改图片大小
[GIF][Word2010]文档的合并
[GIF][Excel 2010]利用单元格格式进行判断
[GIF][PowerPoint 2010]增加PowerPoint的后悔药
[GIF][Word 2010]Word快速绘制分割线
[GIF][Word 2010]批量提取Word中的超链接
[GIF][Word 2013]打印时不打印图片
[GIF][Word 2010]取消段落标记符
[GIF][Word 2010]批量提取word中的图片
[GIF][Excel 2013]图表数据变化效果
[GIF][Excel 2013]批量修改数据为负数
[GIF][Excel 2010]清除单元格中前导或后置空格
[视频][Excel 2010]跨表下拉菜单制作
[GIF][Excel 2010]冻结部分行和列
[视频][Excel 2010]用函数公式提取唯一值
[GIF][Excel 2010]照相机应用
[GIF][Excel 2010] 一键取消所有操作
[GIF][Excel 2010]复制时忽略隐藏的单元格
[GIF][Excel 2010]只允许编辑部分单元格
[GIF][OneNote 2010]提取图片中的文字
[GIF][Excel 2010]选择性粘贴转换文本成数值
[视频][outlook 2010]利用规则进行自动答复
[GIF][Word 2013]标尺的使用
[GIF][Excel 2013]Office应用程序Bing Maps
[GIF][Excel 2013]克隆当前标签
[GIF][Excel 2013] 超链接的简单教程
[GIF][Excel 2010]批量删除Excel中的单引号——函数法
[GIF][Excel 2010]批量删除Excel中的单引号——技巧法
[GIF][Excel 2013]为数值添加文本单位
[GIF][Excel 2013]自动添加表格边框
[GIF][Excel 2013]手机号码的分隔
[GIF][Excel 2013]英文序列填充
[GIF][Excel2010]取消合并单元格,并自动填充单元格数值
[GIF][Excel2010]如何将数据同时缩小1000倍
[GIF][Excel 2013]拆分单元格文本到不同的单元格
本文转自 kirin 51CTO博客,原文链接:http://blog.51cto.com/kirin/1102990 ,如需转载请自行联系原作者
针对不同场景的Python合并多个Excel方法
大家好,我是辰哥~在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便。最近辰哥也是在弄excel文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢~~~三种场景:多个同字段的excel文件合并成一个excel多个不同字段的excel文件拼接成一个excel一个excel的多个sheet合并成一个sheet辰哥目前想到的仅是辰哥遇到的这三种情况(如果还有很多其他情况的,欢迎在下方留言,因为辰哥日常非经常涉及多种excel处理的内容,所以想不到其他情况)01 合并多个同字段的excel这里辰哥先新建三个excel文件:11.xlsx;12.xlsx;13.xlsx;并往里填充数据,数据如下:11.xlsx12.xlsx13.xlsx需求:将这三个excel文件合并到一个excel中。导入库# 读取模块
import xlrd
# 写入模块
import xlwt这里需要用到两个库:xlrd读取excel; xlwt写入到合并的excel;# 文件列表
xlxs_list = ["1/11.xlsx","1/12.xlsx","1/13.xlsx"]
# 创建合并后的文件
workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet('Sheet1')定义合并哪些excel文件,以及合并后的excel# 行数
count = 0
#表头(只写入第一个xlsx的表头)
bt = 0
for name in xlxs_list:
wb = xlrd.open_workbook(name)
#按工作簿定位工作表
sh = wb.sheet_by_name('Sheet1')
#遍历excel,打印所有数据
if count>1:
bt=1
for i in range(bt,sh.nrows):
k = sh.row_values(i)
# 遍历每一行中的每一列
for j in range(0,len(k)):
worksheet.write(count,j, label=str(k[j]))
count = count +1
workbook.save('1/合并1_辰哥.xlsx')最后合并到:合并1_辰哥.xlsx 中,其结果如下:02 拼接多个不同字段的excel新建三个excel文件:21.xlsx;22.xlsx;23.xlsx;并往里填充数据21.xlsx22.xlsx23.xlsx将这三个excel文件拼接带一个excel中(从左往右)# 列数
col = 0
for name in xlxs_list:
wb = xlrd.open_workbook(name)
#按工作簿定位工作表
sh = wb.sheet_by_name('Sheet1')
#遍历excel,打印所有数据
for i in range(0,sh.nrows):
k = sh.row_values(i)
# 遍历每一行中的每一列
for j in range(0,len(k)):
worksheet.write(i,col+j, label=str(k[j]))
col = col +len(k)
workbook.save('2/合并2_辰哥.xlsx')最后合并到:合并2_辰哥.xlsx 中,其结果如下:03 合并一个excel的多个sheet新建一个excel文件:31.xlsx;并新增sheet1、sheet2、sheet3,往里填充数据sheet1sheet2sheet3将同一个excel文件中的这三个sheet并到一个sheet中。sheet_list = ['Sheet1','Sheet2','Sheet3']
# 行数
count = 0
# 表头(只写入第一个xlsx的表头)
bt = 0
for st in sheet_list:
#按工作簿定位工作表
sh = wb.sheet_by_name(st)
#遍历excel,打印所有数据
if count > 1:
bt = 1
for i in range(bt, sh.nrows):
k = sh.row_values(i)
# 遍历每一行中的每一列
for j in range(0, len(k)):
worksheet.write(count, j, label=str(k[j]))
count = count + 1
workbook.save('3/合并3_辰哥.xlsx')最后合并到:合并3_辰哥.xlsx 中,其结果如下:04 小结目前想到的仅是辰哥遇到的这三种情况(如果还有很多其他情况的,欢迎在下方留言,因为辰哥日常并非经常涉及多种excel处理的内容,所以想不到其他情况)
[ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel
继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出。
本文目录
本文目录
poi项目下载及加载
extjs前端导出设置
extjs后台对应的解决方案
创建excel工作簿
创建一个excel页签
生成excel样式并初始化
产生表格标题行build headers
构造数据行build rows
poi项目下载及加载
POI项目是apache官网的一个开源项目,其主要目的是对microsoft的办公软件进行接口封装,让用户可以对其进行编码方式书写。
项目开源网址:Apache POI: http://poi.apache.org/
到写文章的时候,最新版本是3.1.1,下载bin包 解压缩后将jar包(以下图片中的jar包)加入到项目的lib中:
OK。自己测试一下是否正常添加到项目库中就可以了。
extjs前端导出设置
在前端extjs的grid中加入底部gridtoolbar内容增加一个导出excel按钮,增加处理事件,对处理事件关联到后台action.
exportexyjsGrid: function (grid) {
//关联后台,传入需要的参数
}
extjs后台对应的解决方案
在后台的action处理:
创建excel工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
创建一个excel页签
HSSFSheet sheet = workbook.createSheet("页签标题");
生成excel样式并初始化
HSSFCellStyle style = workbook.createCellStyle();
产生表格标题行(build headers)
HSSFRow row = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
构造数据行(build rows)
跟标题行一样 遍历前台传入的grid参数 找到store 过滤参数条件 遍历插入excel数据行并填充数据即可。
本文主要使用的markdown编辑器功能:
1. 代码高亮
2. 图片上传
3. 标题目录
C#常用工具类——Excel操作类
/// 常用工具类——Excel操作类
/// <para> ------------------------------------------------</para>
/// <para> CreateConnection:根据Excel文件路径和EXCEL驱动版本生成OleConnection对象实例</para>
/// <para> ExecuteDataSet:执行一条SQL语句,返回一个DataSet对象</para>
/// <para> ExecuteDataTable:执行一条SQL语句,返回一个DataTable对象</para>
/// <para> ExecuteDataAdapter:表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。</para>
/// <para> ExecuteNonQuery:执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。</para>
/// <para> ExecuteScalar:执行数据库语句返回第一行第一列,失败或异常返回null</para>
/// <para> ExecuteDataReader:执行数据库语句返回一个自进结果集流</para>
/// <para> GetWorkBookName:获取Excel中的所有工作簿</para>
using System;
using System.Configuration;
using System.Web;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace Utils
{
/// <summary>
/// <para> </para>
/// 常用工具类——Excel操作类
/// <para> ------------------------------------------------</para>
/// <para> CreateConnection:根据Excel文件路径和EXCEL驱动版本生成OleConnection对象实例</para>
/// <para> ExecuteDataSet:执行一条SQL语句,返回一个DataSet对象</para>
/// <para> ExecuteDataTable:执行一条SQL语句,返回一个DataTable对象</para>
/// <para> ExecuteDataAdapter:表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。</para>
/// <para> ExecuteNonQuery:执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。</para>
/// <para> ExecuteScalar:执行数据库语句返回第一行第一列,失败或异常返回null</para>
/// <para> ExecuteDataReader:执行数据库语句返回一个自进结果集流</para>
/// <para> GetWorkBookName:获取Excel中的所有工作簿</para>
/// </summary>
public class ExcelHelper
{
private ExcelHelper() { }
#region EXCEL版本
/// <summary>
/// EXCEL版本
/// </summary>
public enum ExcelVerion
{
/// <summary>
/// Excel97-2003版本
/// </summary>
Excel2003,
/// <summary>
/// Excel2007版本
/// </summary>
Excel2007
}
#endregion
#region 根据EXCEL路径生成OleDbConnectin对象
/// <summary>
/// 根据EXCEL路径生成OleDbConnectin对象
/// </summary>
/// <param name="ExcelFilePath">EXCEL文件相对于站点根目录的路径</param>
/// <param name="Verion">Excel数据驱动版本:97-2003或2007,分别需要安装数据驱动软件</param>
/// <returns>OleDbConnection对象</returns>
public static OleDbConnection CreateConnection(string ExcelFilePath,ExcelVerion Verion)
{
OleDbConnection Connection = null;
string strConnection = string.Empty;
try
{
switch (Verion)
{
case ExcelVerion.Excel2003: //读取Excel97-2003版本
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; " +
"Data Source=" + HttpContext.Current.Server.MapPath(ExcelFilePath) + ";Extended Properties=Excel 8.0";
break;
case ExcelVerion.Excel2007: //读取Excel2007版本
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=YES';data source=" + ExcelFilePath;
break;
}
if(!string.IsNullOrEmpty(strConnection)) Connection = new OleDbConnection(strConnection);
}
catch (Exception)
{
}
return Connection;
}
#endregion
#region 创建一个OleDbCommand对象实例
/// <summary>
/// 创建一个OleDbCommand对象实例
/// </summary>
/// <param name="CommandText">SQL命令</param>
/// <param name="Connection">数据库连接对象实例OleDbConnection</param>
/// <param name="OleDbParameters">可选参数</param>
/// <returns></returns>
private static OleDbCommand CreateCommand(string CommandText, OleDbConnection Connection, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
{
if (Connection.State == ConnectionState.Closed)
Connection.Open();
OleDbCommand comm = new OleDbCommand(CommandText, Connection);
if (OleDbParameters != null)
{
foreach (OleDbParameter parm in OleDbParameters)
{
comm.Parameters.Add(parm);
}
}
return comm;
}
#endregion
#region 执行一条SQL语句,返回一个DataSet对象
/// <summary>
/// 执行一条SQL语句,返回一个DataSet对象
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <param name="CommandText">SQL语句</param>
/// <param name="OleDbParameters">OleDbParameter可选参数</param>
/// <returns>DataSet对象</returns>
public static DataSet ExecuteDataSet(OleDbConnection Connection, string CommandText, params OleDbParameter[] OleDbParameters)
{
DataSet ds = new DataSet();
try
{
OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
OleDbDataAdapter da = new OleDbDataAdapter(comm);
da.Fill(ds);
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return ds;
}
#endregion
#region 执行一条SQL语句,返回一个DataTable对象
/// <summary>
/// 执行一条SQL语句,返回一个DataTable对象
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <param name="CommandText">SQL语句</param>
/// <param name="OleDbParameters">OleDbParameter可选参数</param>
/// <returns>DataSet对象</returns>
public static DataTable ExecuteDataTable(OleDbConnection Connection, string CommandText, params OleDbParameter[] OleDbParameters)
{
DataTable Dt = null;
try
{
OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
OleDbDataAdapter da = new OleDbDataAdapter(comm);
DataSet Ds = new DataSet();
da.Fill(Ds);
Dt = Ds.Tables[0];
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return Dt;
}
#endregion
#region 表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。
/// <summary>
/// 表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <param name="CommandText">SQL语句</param>
/// <param name="OleDbParameters">OleDbParameter可选参数</param>
/// <returns></returns>
public static OleDbDataAdapter ExecuteDataAdapter(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
{
OleDbDataAdapter Da = null;
try
{
OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
Da = new OleDbDataAdapter(comm);
OleDbCommandBuilder cb = new OleDbCommandBuilder(Da);
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return Da;
}
#endregion
#region 执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。
/// <summary>
/// 执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <param name="CommandText">SQL语句</param>
/// <param name="OleDbParameters">OleDbParameter可选参数</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
{
int i = -1;
try
{
if (Connection.State == ConnectionState.Closed) Connection.Open();
OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
i = comm.ExecuteNonQuery();
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return i;
}
#endregion
#region 执行数据库语句返回第一行第一列,失败或异常返回null
/// <summary>
/// 执行数据库语句返回第一行第一列,失败或异常返回null
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <param name="CommandText">SQL语句</param>
/// <param name="OleDbParameters">OleDbParameter可选参数</param>
/// <returns>第一行第一列的值</returns>
public static object ExecuteScalar(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
{
object Result = null;
try
{
OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
Result = comm.ExecuteScalar();
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return Result;
}
#endregion
#region 执行数据库语句返回一个自进结果集流
/// <summary>
/// 执行数据库语句返回一个自进结果集流
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <param name="CommandText">SQL语句</param>
/// <param name="OleDbParameters">OleDbParameter可选参数</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteDataReader(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
{
OleDbDataReader Odr = null;
try
{
OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
Odr = comm.ExecuteReader();
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return Odr;
}
#endregion
#region 获取Excel中的所有工作簿
/// <summary>
/// 获取Excel中的所有工作簿
/// </summary>
/// <param name="Connection">OleDbConnection对象</param>
/// <returns></returns>
public static DataTable GetWorkBookName(OleDbConnection Connection)
{
DataTable Dt = null;
try
{
if (Connection.State == ConnectionState.Closed) Connection.Open();
Dt = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
}
catch (Exception)
{
}
finally
{
if (Connection.State == ConnectionState.Open) Connection.Close();
}
return Dt;
}
#endregion
}
}