-
Excel数据处理与分析实战技巧精粹 附书源码
2010-10-10 19:46:37本书内容丰富、图文并茂、可操作性强且便于查阅,主要面向Excel中高级读者,能有效地帮助读者提高Excel数据处理与分析的水平,提升工作效率。 详细目录 绪论 最佳Excel学习方法 01 成为Excel高手的捷径 02 ... -
c++ 读写excel_python操作Excel,你觉得哪个库更好呢?
2020-11-14 02:35:47微信公众号:python爬虫实战之路关注可了解更多的python爬虫实战项目。问题或建议,请公众号...sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。cell...微信公众号:python爬虫实战之路
关注可了解更多的python爬虫实战项目。问题或建议,请公众号留言Excel数据的类型及组织方式
每一个Excel数据文件从上至下分为三个层级的对象:workbook: 每一个Excel文件就是一个workbook。sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。
Excel模块对比
平台:Mac
工具:PyCharm
Python:python3.6
Excel行数:64543openpyxlxlrd&xlwtxlsxwriter读取9.406903028488165.220927000045776不支持读写8.9095242023468026.5021541118621839.416481733322144类型xlsxxlsx、xls(写)xlsx格式可读取xlsx不支持X
从一个既有的xlsx文件中读取数据,按照Excel文件的三个层级,分别来看一下以上三个库的操作方式。
xlrd & xlwt & xlutils
xlrd负责读取Excel文件,支持xls、xlsx
xlwt负责写入Excel文件,只支持xls格式。对于现在已经Office2019了,还只支持2003版的格式难怪会被人抛弃。
xlutils是一个工具模块,我们一般只用到copy模块,用于修改已存在的Excel文件open_workbook
param: encoding_override 读取Excel文件时默认使用ASCII编码。此处可指定编码。param: formatting_info
设置是否保存Excel格式,比如加粗。一般只对简单的格式起作用,而且xlsx格式文件不支持。
这可以节省内存。在这种情况下,通过忽略文件BLANK和MULBLANK记录,“空白”单元格(它们具有自己的格式信息但没有数据)会被视为空白param: on_demand
按需加载工作表。默认加载False,加载所有的工作表。设置True时,调用book.sheet_by_name或book.sheet_by_index才会加载工作表。book.sheets加载所有工作表。book.sheet_loaded判断表单是否已加载。book.unload_sheet卸载已加载表单。- 打开workbook:
import xlrd
book = xlrd.open_workbook("myfile.xls") #book就赋值为一个Excel文件了
注:
Book 类的方法、属性等:即就可以对上面的book进行操作了
book.nsheets: 在Book对象中的文件有多少个worksheet。
book.sheet_by_index(sheetx): 根据提供的sheetx索引来获取我们需要的sheet表,返回的是一个Sheet类的实例。
book.sheet_by_name(sheet_name): 根据提供的sheet_name来获取对应名称的sheet类对象,返回的也是一个Sheet类的对象。
book.sheet_names(): 在Book对象中的所有sheet表的名称列表。
book.sheets(): 返回在Book对象中所有的Sheet对象实例列表。 - 打开所需的sheet:
sheet = book.sheet_by_index(0) #获得一个sheet,也可以使名字获得
print sheet.name, sheet.nrows, sheet.ncols
注:
Sheet类方法、属性等:
sheet.cell(rowx, colx): 根据给出的行和列的参数获取得到cell类,返回一个Cell类实例对象。
sheet.cell_type(rowx, colx): 返回对应的cell对象的Type类型。
sheet.cell_value(rowx, colx): 返回对应的cell对象的value值。
sheet.col(colx): 返回指定列的所有cell类对象序列。
sheet.name: 返回sheet对象的名称。
sheet.ncols: 返回在sheet对象中的列的数目。
sheet.nrows: 返回在sheet对象中的行的数目。
sheet.row(rowx): 返回指定的行的所有cell对象的序列。
sheet.row_values(rowx, start_colx=0, end_colx=None):获取行内容。
sheet.col_values(colx, start_rowx=0, end_rowx=None):获取列内容。 - 获取对应cell的值:
cell=sheet.cell(rowx=29, colx=3) #根据给出的行和列的参数获取得到cell类,返回一个Cell类实例对象.
sh.cell_value(rowx=29, colx=3)
注:
Cell类的属性、方法如下:
Cell类对象有3种属性:ctype, value, xf_index
如果在excel文件打开的时候,formatting_info未启用的时候,xf_index是为None
下面列出了cell的类型,以及他们在python中所代表的值
type symbol type number python value
XL_CELL_EMPTY 0 空的字符串''
XL_CELL_TEXT 1 unicode字符串
XL_CELL_NUMBER 2 float
XL_CELL_DATE 3 float
XL_CELL_BOOLEAN 4 int;1 --- True,0 --- False
XL_CELL_ERROR 5 int代表是一个excel内部错误码;
XL_CELL_BLANK 6 空的字符串'', 注意:这个类型仅仅会出现,当函数open_workbook(..,formatting_info=True)这样设置的时候。
Excel单元格内容存在不同的格式,可使用cell.ctype获取类型判断。
ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
日期类型可以使用xldate_as_tuple模块处理:value = sheet.cell_value(row, col) if sheet.cell(row, col).ctype == 3: date_value = xlrd.xldate_as_tuple(value, book.datemode) #输出元组 (2018, 2, 23, 0, 0, 0)
openpyxl
openpyxl支持可读可写操作,不支持xls文件的读写
. 一个简单创建例子
from openpyxl import Workbook wb = Workbook() ws = wb.active ws['A1'] = 42 ws.append([1, 2, 3]) import datetime ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d") wb.save("sample.xlsx")
通过
openpyxl.workbook.Workbook.active()
得到worksheet.ws = wb.active
注意:
该方法使用_active_sheet_index属性, 默认会设置0,也就是第一个worksheet。除非手动修改,否则使用active方法得到都是第一个worksheet。
你也可以创建worksheets,通过openpyxl.workbook.Workbook.create_sheet()
方法:ws1 = wb.create_sheet("Mysheet") #插入到最后(default)
或ws2 = wb.create_sheet("Mysheet", 0) #插入到最开始的位置
创建的sheet的名称会自动创建,按照sheet,sheet1,sheet2自动增长,通过title属性可以修改其名称。
ws.title = "New Title"默认的sheet的tab是白色的,可以通过 RRGGBB颜色来修改sheet_properties.tabColor属性从而修改sheet tab按钮的颜色:
ws.sheet_properties.tabColor = "1072BA"
当你设置了sheet的名称,可以将其看成workbook中的一个key。工作表有两种获取方式
ws3 = wb["New Title"]
--推荐ws4 = wb.get_sheet_by_name("New Title")
查看workbook中的所有worksheets名称:book.sheetnames
遍历worksheets:for sheet in book: print sheet.title
. 操作数据
单元格可以看作是worksheet的key,通过key去访问和设置单元格中的数据
value = ws["A4"]
ws["A4"] = data注意:- 当worksheet在内存中被创建时,是没有包含cells的,cells是在首次访问时创建.
- 可以循环在内存中创建cells,这时不指定他们的值也会创建该cells些:(创建100x100cells)
for i in range(1,101): for j in range(1,101): ws.cell(row=i, column=j)
通过切片Ranges指定许多cells
cell_range = ws['A1': 'C2']
同样也可以Ranges行或者列:
colC = ws['C']
col_range = ws['C:D']
rwo10 = ws[10]
rwo_range = ws[5:10]也可以使用
openpyxl.worksheet.Worksheet.iter_rows()
方法:(需要指定行->行,截止列)for row in ws.iter_rows(min_col=1, min_row=1, max_col=3, max_row=2): for cell in row: print cell.value
如果你需要遍历所有文件的行或列,可以使用
openpyxl.worksheet.Worksheet.rows()
属性:tuple(ws.rows)或者openpyxl.worksheet.Worksheet.columns()
属性:tuple(ws.columns)最简单最安全的方法保存workbook是使用
openpyxl.workbook.Workbook
对象的openpyxl.workbook.Workbook.save()
方法:
wb = Workbook()
wb.save('balances.xlsx')保存的默认位置在python的根目录下。
注意:会自动覆盖已经存在文件名的文件。
我们可以导入一个文件进行读或者写,像写一样我们可以导入openpyxl.load_workbook()
已经存在的workbook:from openpyxl import load_workbook wb2 = load_workbook('test.xlsx') print wb2.get_sheet_names()
append函数
可以一次添加多行数据,从第一行空白行开始(下面都是空白行)写入
如果需要整列进行添加数据:lst = ["test1", "teset2", "test3", "test4"] for row in range(1, 40): ws1.append(lst) # 添加多行 rows = [ ['Number', 'data1', 'data2'], [2, 40, 30], [3, 40, 25], [4, 50, 30], [5, 30, 10], [6, 25, 5], [7, 50, 10]] map(ws1.append, rows)
由于
append
函数只能按行写入。如果我们想按列写入呢?
写入例子:# workbook相关 from openpyxl import Workbook from openpyxl.compat import range from openpyxl.utils import get_column_letter wb = Workbook() dest_filename = 'empty_book.xlsx' ws1 = wb.active ws1.title = "range names" for row in range(1, 40): ws1.append(["test%s" % i for i in range(6)]) ws2 = wb.create_sheet(title="Pi") ws2['F5'] = 3.14 ws3 = wb.create_sheet(title="Data") for row in range(10, 20): for col in range(27, 54): _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col))) print(ws3['AA10'].value) wb.save(filename=dest_filename)
使用公式
from openpyxl import Workbook wb = Workbook() ws = wb.active # add a simple formula for i in range(1, 20): ws.append([i * num for num in range(1, 4)]) for i in range(1, 20): ws["D%s" % i] = "=SUM(A{0}, C{0})".format(i) wb.save("formula.xlsx")
. 设置单元格风格--Style
先导入需要的类
from openpyxl.styles import Font, colors, Alignment
分别可指定字体相关,颜色,和对齐方式。字体
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True) sheet['A1'].font = bold_itatic_24_font
上面的代码指定了等线24号加粗斜体,字体颜色红色。直接使用cell的
font
属性,将Font对象赋值给它。对齐方式
也是直接使用cell的属性
aligment
,这里指定垂直居中和水平居中。除了center,还可以使用right、left
等等参数。# 设置B1中的数据垂直居中和水平居中 sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')
设置行高和列宽
有时候数据太长显示不完,就需要拉长拉高单元格。
# 第2行行高 sheet.row_dimensions[2].height = 40 # C列列宽 sheet.column_dimensions['C'].width = 30
合并和拆分单元格
所谓合并单元格,即以合并区域的左上角的那个单元格为基准,覆盖其他单元格使之称为一个大的单元格。
相反,拆分单元格后将这个大单元格的值返回到原来的左上角位置。# 合并单元格, 往左上角写入数据即可 sheet.merge_cells('B1:G1') # 合并一行中的几个单元格 sheet.merge_cells('A1:C3') # 合并一个矩形区域中的单元格
合并后只可以往左上角写入数据,也就是区间中
:
左边的坐标。
如果这些要合并的单元格都有数据,只会保留左上角的数据,其他则丢弃。换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。以下是拆分单元格的代码。拆分后,值回到A1位置。
sheet.unmerge_cells('A1:C3')
xlsxwriter
只支持写入,不支持读取,也不支持查询,不支持xls格式
. Workbook类
Workbook类
定义:Workbook(filename[,options])
该类可以实现创建一个XlsxWriter
的Worbook
对象。Workbook
类表示整个电子表格文件。- 参数
filename
(String
类型)为创建的Excel
文件存储路径; - 参数
options
(Dict
类型)为可选的Workbook
参数,作为初始化表格内容;
例如:{'strings_to_numbers' : True}
表示使用worksheet.write()
方法时激活字符串转换数字。
add_Worksheet([sheetname])方法
添加一个新的工作表,参数
sheetname
(String
类型)为可选参数,默认为sheet1
;比如说按照表单顺序该工作表为第五张,则默认名为sheet5
。# -*- coding: utf-8 -*- import xlsxwriter workbook = xlsxwriter.Workbook('Demo2.xlsx') # 创建一个名为Dome2.xlsx的表格 worksheet1 = workbook.add_worksheet() # 添加第一个表单,默认为sheet1 worksheet2 = workbook.add_worksheet('Files') # 添加一个名为File的表单 worksheet3 = workbook.add_worksheet() # 添加一个表单,默认为sheet3 workbook.close()
add_format([properties])方法
在工作表中创建一个新的格式对象来格式化单元格。参数
properties
(Dict
类型)为指定一个格式属性的字典。bold = workbook.add_format() bold.set_bold() # 设置为加粗
add_chart(options)方法
在工作表中创建一个图表对象,内部通过
insert_chart()
方法来实现,参数options
(dict
类型)为图标指定一个字典属性。# 设置线条类型的图表对象 chart = workbook.add_chart({'type' : 'line'})
close()方法
# 关闭工作表文件 workbook.close()
. Worksheet类
Worksheet
代表了一个Excel
工作表,是XlsxWriter
模块操作Excel
内容最核心的一个类,例如将数据写入到单元格或者工作表格式布局等。 Workbook
对象通过add_worksheet()
方法来创建。write(row, col, *args)方法
其作用是将普通数据写入到工作表单元格。
参数row
为行标,col
为列标,坐标检索起始值为0
; *args
无名字参数为数据内容,可以是数字、公式、字符串或格式对象。
write方法已经作为其它更加具体数据类型方法的别名。如以下几种:write_string()
,写入字符串类型数据;write_number()
,写入数据类型数据;write_blank()
,写入空类型数据;write_formula()
,写入公式型数据;write_datetime()
,写入日期类型数据;wrtie_boolean()
,写入逻辑类型数据;write_url()
,写入超链接类型数据。
import xlsxwriter workbook = xlsxwriter.Workbook('Demo2.xlsx') # 创建一个名为Dome2.xlsx的表格 worksheet1 = workbook.add_worksheet() # 添加第一个表单,默认为sheet1 worksheet2 = workbook.add_worksheet('Files') # 添加一个名为File的表单 worksheet3 = workbook.add_worksheet() # 添加一个表单,默认为sheet3 worksheet1.write(0, 0, 'Hello') # write_string() worksheet1.write(1, 0, 1.23) # write_number() worksheet1.write(2, 0, '') # write_blank() worksheet1.write(3, 0, None) # write_blank() worksheet1.write(4, 0, '=SIN(PI()/4)') # write_formula() workbook.close()
set_row(row, height, cell_format, options)方法
其作用是设置行单元格属性。
row
(int
类型),指定行位置,起始下标为0
; height
(float
类型),设置行高,单位为像素; cell_format
(format
类型)指定格式对象; options
(dict
类型)设置行hidden
(隐藏)、level
(组合分级)、collapsed
(折叠)。
import xlsxwriter # 创建一个名为Dome2.xlsx的表格 workbook = xlsxwriter.Workbook('Demo2.xlsx') # 添加第一个表单,默认为sheet1 worksheet1 = workbook.add_worksheet() # 在单元格A1写入‘Hello’字符串 worksheet1.write('A1', 'Hello') # 定一个加粗的格式对象 cell_format = workbook.add_format({'bold': True}) # 第一行单元格高度为40px,且引用加粗格式对象 worksheet1.set_row(1, None, None, {'hidden': True}) # 隐藏第2行单元格 worksheet1.set_row(0, 40, cell_format) workbook.close()
set_column(first_col, last_col, cell_format, options)方法
同上一个方法类似,这个方法是用于设置一列或多列单元格属性。
insert_image(row, col, image[,options])方法
其作用是插入图片到指定单元格,支持
PNGJPGBMP
等图片格式 row
为行坐标,col
为列坐标,坐标索引起始位置为0
; image
(string
类型)为图片路径; options
(dict
类型)为可选参数,指定图片的位置、比例、链接url
等信息。
import xlsxwriter workbook = xlsxwriter.Workbook('Demo2.xlsx') # 创建一个名为Dome2.xlsx的表格 worksheet1 = workbook.add_worksheet() # 添加第一个表单,默认为sheet1 worksheet1.insert_image(2, 2, 'blog.png') # 在第三行第三列插入一张图片 workbook.close()
. 添加图表示例
#!/usr/bin/python #coding: utf-8 import xlsxwriter workbook = xlsxwriter.Workbook('chart.xlsx') worksheet = workbook.add_worksheet() #新建图标对象 chart = workbook.add_chart({'type': 'column'}) #向 excel 中写入数据,建立图标时要用到 data = [ [1, 2, 3, 4, 5], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], ] worksheet.write_column('A1', data[0]) worksheet.write_column('B1', data[1]) worksheet.write_column('C1', data[2]) #向图表中添加数据,例如第一行为:将A1~A5的数据转化为图表 chart.add_series({'values': '=Sheet1!$A$1:$A$5'}) chart.add_series({'values': '=Sheet1!$B$1:$B$5'}) chart.add_series({'values': '=Sheet1!$C$1:$C$5'}) #将图标插入表单中 worksheet.insert_chart('A7', chart) workbook.close()
如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路
- 打开workbook:
-
jexcelapi学习笔记三——各数据类型的写操作(修改)
2011-12-06 10:49:41在Jxl中对Excel的修改是比较特别的,它主要分为3步: 1.构造只读的 Excel 工作薄 Workbook w1 = Workbook.getWorkbook(new File(path));//path为文件所在路径 2.根据已创建Excel的工作簿创建新的可...前面我们都是在用jxl创建Excel文件,这次我们介绍如何更新一个已经存在的工作薄。在Jxl中对Excel的修改是比较特别的,它主要分为3步:
1.构造只读的 Excel 工作薄
Workbook w1 = Workbook.getWorkbook(new File(path));//path为文件所在路径
2.根据已创建Excel的工作簿创建新的可写入的工作簿
WritableWorkbook wb = Workbook.createWorkbook(new File(path), w1); //w1为已创建的工作簿
3. 在新的工作表写入或在原有的工作表中写入
// 得到已存在的工作表
WritableSheet sheet1 = wb.getSheet(0); // 修改原来的单元格数据 WritableCell cell = new Label(0, 0, "在原有Sheet上修改"); sheet1.addCell(cell); // 创建新的一页,sheet只能在工作簿中使用 WritableSheet sheet = wb.createSheet("tt", 1); cell = new Label(0, 0, "JExcelApi支持数据格式"); CellFormat cf = null; sheet.addCell(cell); cell = new Label(0, 1, "数据格式"); sheet.addCell(cell); cell = new Label(1, 1, "浮点数"); sheet.addCell(cell); cell = new Label(2, 1, "整数"); sheet.addCell(cell); cell = new Label(3, 1, "布尔值"); sheet.addCell(cell); cell = new Label(4, 1, "日期"); sheet.addCell(cell); cell = new Label(0, 2, "数据实例"); sheet.addCell(cell); // 生成保存浮点数的单元格,通过jxl.write.Number来实现jxl.write.WritableCell接口 // Number构造函数三个参数是1.列号2.行号3.数据 cell = new Number(1, 2, 99.99); sheet.addCell(cell); // 生成保存整数的单元格 cell = new Number(2, 2, 99); sheet.addCell(cell); // 生成保存布尔值的单元格 cell = new Boolean(3, 2, false); sheet.addCell(cell); // 生成保存日期的单元格,并为该时间设置输出格式 Calendar cal = Calendar.getInstance(); cal.set(2011, 11, 11, 11, 11, 11); Date d = cal.getTime(); DateFormat df = new DateFormat("yyyy-MM-dd hh:mm:ss");// 为时间设置输出格式为:"yyyy-MM-dd hh:mm:ss" cf = new WritableCellFormat(df); cell = new DateTime(4, 2, d, cf); sheet.addCell(cell); // 将内容写到输出流中,然后关闭工作区,最后关闭输出流 wb.write(); wb.close(); w1.close();
上面红色的代码如果我换成如下代码:
WritableWorkbook wb = Workbook.createWorkbook(new FileOutputStream(path), w1);
则会出现下面的问题:
希望有哪位知道的大侠帮忙解答一下,谢谢!附件中有该代码!
-
excel的使用
2012-11-25 17:06:01存放数据格式为“x,y”的形式,首先在Excel中输入坐标值,将x坐标值放入A列,y坐标值放入到B列,然后利用“&”将A列和B列合并成C列,在C1中输入:=A1&","&B1;,此时C1中的数据形式就符合要求了,再用鼠标向下拖动... -
从零开始学Excel.VBA
2014-03-11 09:08:45Excel VBA基础篇系统地讲解了Excel VBA开发环境,以及Excel VBA的数据类型、运算符、函数与过程等语法知识。Excel VBA对象模型篇针对性地详细讲解了Excel VBA中常用的Application对象、Workbook工作簿、Worksheet... -
EXCEL函数公式集
2010-03-16 03:26:38如何在EXCEL中快速定位最后一行数据 用SUN函数快速求和 在Excel中快速查看所有工作表公式 在Excel中设置行间距 怎样同时改变多行行高 快速换行 让文本换行 在Excel中行列快速转换 将原有列中的内容倒置过来 快速回到... -
Excel新增工具集
2011-12-20 09:30:271、Word转Excel:把若干个Word文档中的表合并到Excel工作簿中的一个工作表中,可用于对下属填写的报名表(登记表)的汇总统计。 2、Excel转Word:把Excel工作簿的某个工作表中记录逐一拆分到对应的若干个Word文档中... -
Excel图表实战技巧精粹
2013-01-04 17:01:41全书分为7章,首先介绍图表制作中经常使用的各种技巧,然后分别介绍交互式图表、高级图表、图表自动化和趣味图表的制作及使用技巧,最后介绍如何将图形应用到excel图表中以及图表制作中的误区等内容。 本书内容丰富... -
Excel2007图表完全剖析 8/8
2012-04-01 10:28:2813.1.2 在Excel中“开发工具”选项卡 289 13.1.3 Visual Basic编辑器 289 13.1.4 Visual Basic工具 290 13.1.5 宏录制器 291 13.1.6 理解面向对象的代码 291 13.2 学习VBA编程技巧 291 13.2.1 编写代码... -
Excel2007图表完全剖析 5/8
2012-04-01 10:11:0213.1.2 在Excel中“开发工具”选项卡 289 13.1.3 Visual Basic编辑器 289 13.1.4 Visual Basic工具 290 13.1.5 宏录制器 291 13.1.6 理解面向对象的代码 291 13.2 学习VBA编程技巧 291 13.2.1 编写代码... -
Excel公式大全操作应用实例(史上最全)
2018-03-06 21:09:38如何在EXCEL中快速定位最后一行数据 用SUN函数快速求和 在Excel中快速查看所有工作表公式 在Excel中设置行间距 怎样同时改变多行行高 快速换行 让文本换行 在Excel中行列快速转换 将原有列中的内容倒置过来 快速回到... -
EXCEL集成工具箱V6.0
2010-09-11 01:44:37【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的... -
中文版Excel.2007图表宝典 2/2
2012-04-06 19:01:36读者从中还可以学习如何在图表中修改数据、处理遗漏的数据、格式化图表、使用趋势线,以及从数据透视表创建图表等相关内容。除此之外,还可以学习如何通过AutoShapes,用图片和色彩修饰图表,以及利用VBA编程创建... -
中文版Excel.2007高级VBA编程宝典 1/2
2012-04-06 16:00:16他在书中分享了自己15 年来使用Excel 的经验,毫无保留地传授了学习和使用Excel 的所有知识,为读者掌握Excel 提供了绝佳的途径。本书的前两个版本均已获得巨大成功,在前两版的基础上,本书升华了已有的精华,并... -
EXCEL2007VBA与宏完全剖析 1/4
2012-03-31 14:42:03今天录制的宏可能在明天不起作用,也就是说,录制的宏可能能够处理包含14条记录的数据集,但无法处理包含12条或16条记录的数据集。这是宏录制器存在的常见问题,它们是导致众多Excel大师厌恶编写宏的罪魁祸首。 ... -
Python数据挖掘简易入门
2020-03-11 14:47:29数据采集篇:学习如何解决数据挖掘的数据来源问题,读取各类型不同的数据包括CSV,excel,MySQL进行数据采集的交互。 数据探索篇:本篇主要解决数据的预处理保证数据的质量并用常见数据挖掘算法进行特征提取... -
EXCEL集成工具箱V8.0完整增强版(精简)
2010-09-23 16:58:17【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的... -
呆萌数据结构 | 01 数组
2020-01-10 18:09:53原文来自 萌一小栈 数组,在数据结构中,是很基础,也很常用的一个,在很多很多业务中,都能看到它的身影。数组很简单,在不同的编程语言中,操作方式,也几乎都是类似的。...就像excel中的表格,一行数据,就可...原文来自 萌一小栈
数组,在数据结构中,是很基础,也很常用的一个,在很多很多业务中,都能看到它的身影。数组很简单,在不同的编程语言中,操作方式,也几乎都是类似的。
那数组是什么呢?简单来说,就是在内存中分配一块连续的空间,用来存储相同类型的元素。使用索引,可以直接访问某一个元素的数据。大多数编程语言,数组的索引是从0开始的。
数组也分为一维数组,和多维数组。就像excel中的表格,一行数据,就可以看做是一个一维数组,而多行数据,就可以看做是一个多维数组。
这个是一维数组结构
这个是多维数组结构
关于性能方面,因为数组是固定大小,连续的内存结构,所以访问元素的速度是很快的,时间复杂度是O(1),也就是说,不用遍历,能直接找到要访问的元素,几乎不消耗什么时间。
但是插入和删除某一个元素,就不一样了,假设一个数组有10个元素,删除了第4号元素,那么,4号后面的元素,都要往前移。而插入,也需要将插入位置后面的元素,往后移动。这是数组的一个弊端。
当要插入一个元素,而原本分配的数组空间已经不够时,有些编程语言会产生数组溢出。这时,我们就需要自己写逻辑,当数组空间不足时,分配一个新的更大的数组,先将原来数组的元素复制进去,然后将新元素插入。就像你要将100个桃子放进一个盒子里,但是装着装着发现盒子不够大,这时,就需要找一个更大的盒子,将原来盒子里那些拿出来放到新盒子里,然后继续新盒子里放桃子。
对于数组的操作,有很多,例如删除头部元素、删除尾部元素、在头部添加元素、在尾部添加元素、数组切片、多个数组链接等等。有一些编程语言已经内部实现了这些方法,例如Javascript,Python等,但有一些编程语言,我们就需要在用到时自己实现,例如C语言等。
好了,数组就先介绍到这里,如果有什么问题,或者有解释不准确的地方,欢迎在下面留言,谢谢~
为了方便小伙伴们在手机上阅读,我创建了一个公众号「 萌一小栈 」可以扫码关注噢~
-
EXCEL集成工具箱V9.0 多国语言最终原版(2003-2010通用)
2011-01-07 20:40:25【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的... -
EXCEL集成工具箱V8.0 多国语言版(2003-2010通用)
2010-09-11 12:08:58【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的... -
numeric server sql 有空值加和_数据分析进阶-初识SQL
2020-12-28 23:36:211. 背景与目的数据分析中处理十万以内数据基础工具基于Excel,而针对十万以上超出在数据库的数据需要使用SQL提取。2. 步骤 本篇为入门阶段介绍1) 什么是数据库数据库是“按照数据结构来组织、存储和管理数据的仓库...1. 背景与目的
数据分析中处理十万以内数据基础工具基于Excel,而针对十万以上超出在数据库的数据需要使用SQL提取。
2. 步骤
本篇为入门阶段介绍
1) 什么是数据库
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
相比Excel,数据库存放更多的数据。可多人同时访问 类似网盘
数据库分为数据库共有3种类型,为关系数据库、非关系型数据库和键值数据库。最常见数据库为关系数据库
关系数据库=多张表+各表之间的关系
表的结构包含:列名+行名+表名
主键:用来表示数据唯一性的列(如下:学号列)
主键是关系数据库的重要概念 ,他代表了关系数据库的唯一性。
各表之间关系通过唯一性主键数据列(主键)及联结join语句处理。
如下举例:
什么是数据库管理系统(数据库管理人员)
这是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库(关系数据库管理系统:mysql,oracle,sql server)
什么是SQL
用于操作(访问及处理)数据库里面数据的标准计算机语言
SQL 分类
DDL(Data Definition Language,数据定义语言)
DML(Data Manipulation Language,数据操纵语言)--90%以上
DCL(Data Control Language,数据控制语言)--外加 ‘REVOKE: 取消用户的操作权限
2)如何安装mysql数据库和可视化客户端navicat
数据库安装分为俩部分:
a) MySQL数据库(存放数据)
b) 客户端Navicat (通过客户端,方便操作数据库)
如何验证MySQL数据库安装成功?
打开cmd,按如下步骤操作,显示 server version:5.7.28,安装成功。
如何用客户端(Navicat)连接到MySQL数据库?
第一步 打开Navicat
第二步 连接MySQL
3)表的创建,删除和更新
数据类型分为三种:字符串,数字及日期
第一种:字符串
CHAR 是用来指定存储字符串的列 的数据类型(字符型)。
Varchar 字符类型可以覆盖所有数据类型的长度,不满十个字符串长度(比如三个或四个)也都自动保存原始字符串大小,避免重复数据处理。
Text (微信类文字类文本数据类型)
Blob (视频或图片类数据类型)
第二种:数字
MySQL有上图黄色段的四种数字类型数据,整数型数据。
INTEGER型 用来指定存储整数的列的数据类型(数字型),不能存储小数。
一个字符=3-4个字节
灰色两种为浮点数据 (eg:余额宝日收益为1.3元)
第三种:日期
如下举例:
上图学号为字符串类型而非数字类型(因为数字类一般不以0开头)。
每种类型数据设置固定后, 后续对应数据都得按实际设置的数据类型匹配
长度255为默认值
标3的钥匙行表示为此数据表里的主键数据。
非null表示不可以包含空值为:意为必须输入数据的原数
按实际业务看,如果某一列数据可以有空值,则此处可以没有这个约束(无需打勾)
主键:用来定位某一行数据唯一性的列。选取跟业务关联性较低的字段。表格设定后不要随意 修改主键。
哪一列数据为主键的意思为 不能添加重复的数据列(比如两组学号值)否则会报错。
联合主键:通过多个字段(即两个或更多的字段都设置为主键)设置为唯一标识记录。联合主键中字段允许有重复(不能全部重复)。
联合主键即为固定某行数据,比如上述显示课程表里 学号和课程号联合主键即为 同一个学生只会在一门课上有一个记录。
实战:
a) 使用Navicat创建学校数据库
第一步:双击Navicat打开,右击数据库名da 新建数据库,填写数据库名称,字符集及排序规则如下。
第二步:打开数据库
创建数据库的CREATE DATABASE语句
CREATE DATABASE 数据库名称;--CREATE DATABASE shop;
b) 将上图四张表创建出来,表名为图中英文名称。将学生表学号列设置为主键,课程表学号课程号一起设置为联合主键,成绩表的课程号教师号一起设置为主键,教师表的教师号设置为主键元素,教师姓名这列设置为NULL(允许空值)
第一步,右击表,新建表
依次将学生表四个字段添加,鼠标移至学号列右端单击设置为主键。
保存,输入表名即可。
接下来,按照以上步骤分别创建其余三个表。
Course
Score
Teacher
语法1-2 创建表的CREATE TABLE语句
至此,上述四张表格创建完毕。
表的更新删除如下操作
- 删除表时使用的DROP TABLE语句
DROP TABLE 表名;--DROP TABLE Product;
- 添加/删除列的ALTER TABLE语句
ALTER TABLE <表名> ADD /DROP COLUMN <列的定义>;--ALTER TABLE Product ADD/DROP COLUMN product_name_pinyin VARCHAR(100);
修改表名
4) 数据的插入,删除及更新
若数据较多,使用sql语句批量插入数据
注意:列名不能加引号,数值需加引号表示为字符串的常数,语句结尾用分号结束。
且所有符号需在英文状态下操作。
l 列名不加引号,数据加引号。
l 关键字为蓝色字部分 不区分大小写,表名或列名也不区分大小
为了 理解起来更加容易,本书使用以下规则来书写 SQL 语句。
● 关键字大写 ● 表名的首字母大写 ● 其余(列名等)小写
l 插入表中数据区分大小写。例如,在操作过程中,数据 Computer、COMPUTER 或 computer,三者是不一样的。
l 常数(SQL三种数据类型)固定的书写方式
字符串和日期常数需要使用单引号(')括起来。
数字常数无需加注单引号(直接书写数字即可)。
l 单词之间需要用半角空格或者换行来分隔
- 数据库名称、表名和列名等可以使用以下三种字符。 ● 半角英文字母 ● 半角数字 ● 下划线(_)
- 名称必须以半角英文字母作为开头。
举例:
将上述学校数据库里四张表里数据插入。
注意:教师表里 有一个空值null(没有数据,不可用于计算)及空字符串(”‘):即为空字符串数据,可参与计算。
学生表
成绩表
教师表
至此,相关表格建立及数据插入在数据库完成。
-
EXCEL集成工具箱完整版 (简体/繁体/英文多国语言版) V7.0
2010-08-13 10:31:10【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的... -
Python金融大数据分析
2017-11-27 13:37:43其内容涵盖了Python的数据类型和结构、用matplotlib进行数据可视化、金融时间序列数据处理、高性能输入/输出操作、高性能的Python技术和库、金融学中需要的多种数学工具、随机数生成和随机过程模拟、Python统计学... -
Access2003中文版应用基础教程(高清中文PDF)
2011-05-20 15:24:552-4-1 数据类型的字段属性 2-4-2 设定字段格式与属性 2-5 输入数据技巧 2-5-1 打开工作表窗口 2-5-2 数据表的格式设定 2-5-3 在数据表输入数据 2-5-4 调整字段的列宽与行高 2-6 数据表编辑技巧 2-6-1 选取... -
ASP.NET开发实战1200例(第2卷).(清华出版.房大伟.吕双).part1
2016-06-12 09:54:23实例103 将文本文件数据分解到Excel中的不同工作表 实例104 读取多个Word文档文件到Excel同一工作表 实例105 读取Access数据库中指定表数据到Excel 实例106 将SQL Server数据查询结果输出到Excel 235 4.3 将... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part1
2016-06-16 20:55:43实例252 在ListView控件中对数据排序 实例253 在ListView控件中绘制底纹 实例254 在列表视图中拖动视图项 实例255 使ListView控件中的选择项高亮显示 实例256 制作带复选框的ListView控件 11.7 选择类控件应用... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part2
2016-06-16 20:59:52实例252 在ListView控件中对数据排序 实例253 在ListView控件中绘制底纹 实例254 在列表视图中拖动视图项 实例255 使ListView控件中的选择项高亮显示 实例256 制作带复选框的ListView控件 11.7 选择类控件应用... -
C#开发实战1200例(第1卷).(清华出版.王小科.王军.扫描版).part3
2016-06-16 21:02:21实例252 在ListView控件中对数据排序 实例253 在ListView控件中绘制底纹 实例254 在列表视图中拖动视图项 实例255 使ListView控件中的选择项高亮显示 实例256 制作带复选框的ListView控件 11.7 选择类控件应用... -
公路施工测量坐标计算系统5.3版+注册机5.3
2011-03-06 14:48:02全面改进了数据计算引擎,计算速度极快,在预览页面可将报表保存为同式样的EXCEL或网页文件,在EXCEL中真正体现了人性化的报表界面,也许这才是你理想中的测量软件。 软件功能: 本系统适用于公路主线、立交...
-
Python爬取唐人街探案3豆瓣短评并生成词云
-
元宵节趣味知识答题活动小程序
-
完美解决JavaScript无法上传大文件方法
-
如何建立链栈与二叉链表.doc
-
文件锁定工具IObit Unlocker v1.2.0单文件
-
JDK的安装和卸载
-
自动化测试Python3+Selenium3+Unittest
-
SSM-Mybatis-映射器-SQL元素
-
朱老师鸿蒙系列课程第1期-3.鸿蒙系统Harmonyos源码配置和管理
-
人力资源管理为什么需要自动化审批?
-
项目管理工具与方法
-
【Python-随到随学】FLask第二周
-
前后端分离之Java后端
-
M1芯片mac版Adobe系列(PR/PS/AE/LR/AU/AI等)安装失败闪退问题解决方案
-
opencv深度图可视化
-
7-1 数组元素循环右移问题 (20 分)
-
中央广播电视大学《综合英语3》期末总复习资料(含答案).pdf
-
SQLite相关dll
-
工程制图 AutoCAD 2012 从二维到三维
-
如何修复苹果Mac中的快速视频播放错误