excel转换为csv格式
通过excel保存的时候选择为csv格式即可
创建数据库以及表格
CREATE DATABASE 数据库名;
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`myemployees` /*!40100 DEFAULT CHARACTER SET gb2312 */;
USE `item`;
/*Table structure for table `departments` */
DROP TABLE IF EXISTS `stock_rate`;
CREATE TABLE `stock_rate` (
`名称` varchar(20) ,
`类型` varchar(20) ,
`终端售价价格带` varchar(200),
`SP码`varchar(200) ,
PRIMARY KEY (`SP码`)
#其实不用SP码作为主键
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
load local 数据涉及到的问题
在开始执行之前一定要先去看一下在dos中是否可以执行mysql -u root -p命令,确认无误以后以下代码在终端完成执行
接着执行
mysql -u root --local-infile=1 -p
use item;
load data local infile 'D: 422stock_rate.csv' into table stock_rate
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
IGNORE 1 LINES
(名称, 类型, 终端售价价格带, SP码);
https://www.zhihu.com/question/426972214
导入数据
use item;
load data infile 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\stock_source.csv' into table stock_source
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
IGNORE 1 LINES
(sp码,spname, 仓库, 城市, 方舱出库量,方舱入库数据详情,方舱库存量,wms出库总数量,wms入库数据详情,wms库存量,wms库存成本,方舱在途数量,wms在途数量);
创建表格
uSE `item`;
/*Table structure for table `departments` */
DROP TABLE IF EXISTS `stock_source`;
CREATE TABLE `stock_source` (
`sp码` varchar(200),
`spname` varchar(200),
`仓库` varchar(20),
`城市` varchar(20),
`方舱出库量` int default 0,
`方舱入库数据详情` varchar(20),
`方舱库存量` int,
`wms出库总数量` int default 0,
`wms入库数据详情` varchar(200),
`wms库存量` int default 0,
`wms库存成本` float default 0,
`方舱在途数量` int default 0,
`wms在途数量` int default 0
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
数据源:
CREATE TABLE `249_price` (
`名称` varchar(200) ,
`类型` varchar(200) ,
`标品库名称` varchar(200),
`SP码` varchar(200) ,
`成本` float default 0 not null
-- PRIMARY KEY (`SP码`)
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;
load data infile 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\stock_new.csv' into table stock
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '
'
IGNORE 1 LINES
(sp码,spname,仓库,城市,方舱出库量,wms出库总数量,wms库存量,wms库存成本,wms在途数量);
CREATE TABLE `stock` (
`sp码` varchar(200) ,
`spname` varchar(200) ,
`仓库` varchar(200),
`城市` varchar(200) ,
`方舱出库量` int default 0 not null,
`wms出库总数量` int default 0 not null,
`wms库存量` int default 0 not null,
`wms库存成本` float default 0 not null,
`wms在途数量` int default 0 not null
-- PRIMARY KEY (`SP码`)
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;
from openpyxl import load_workbook
wb = load_workbook("stock4.xlsx")
current_sheet = wb['各前置仓单品周转']
# 创建第一张表:各前置仓单品周转
# current_sheet['A1'] = 'sp码'
# current_sheet['B1'] = 'spname'
# current_sheet['C1'] = '仓库'
# current_sheet['D1'] = '城市'
# current_sheet['E1'] = '前30天销售'
# current_sheet['F1'] = '库存周转天数'
# current_sheet['G1'] = '分类'
# wb.save(filename="stock2.xlsx")
source_sheet = wb['库存']
for j in range(1, 5):
for i in range(2, source_sheet.max_row+1):
current_sheet.cell(row=i, column=j).value = source_sheet.cell(row=i, column=j).value
for i in range(2, current_sheet.max_row+1):
current_sheet[f'E{i}'] = f'=sumifs("C:UsersxujinPycharmProjectspythonProject2[sales.xlsx]Sheet1!"$F:$F,"C:UsersxujinPycharmProjectspythonProject2[sales.xlsx]Sheet1!"$E:$E,A{i},"C:UsersxujinPycharmProjectspythonProject2[sales.xlsx]Sheet1!"$I:$I,C{i})'
wb.save(filename="stock6.xlsx")
from openpyxl import load_workbook
wb = load_workbook("stock.xlsx")
current_sheet = wb.create_sheet('各前置仓单品周转', 0)
current_sheet = wb['各前置仓单品周转']
# 创建第一张表:各前置仓单品周转
current_sheet['A1'] = 'sp码'
current_sheet['B1'] = 'spname'
current_sheet['C1'] = '仓库'
current_sheet['D1'] = '城市'
current_sheet['E1'] = '前置仓库存量'
current_sheet['F1'] = '前30天销售'
current_sheet['G1'] = '库存周转天数'
current_sheet['H1'] = '分类'
source_sheet = wb['库存']
list0 = [1, 2, 3, 4, 10]
for i in range(2, source_sheet.max_row+1):
for k, j in enumerate(list0):
current_sheet.cell(row=i, column=k+1).value = source_sheet.cell(row=i, column=j).value
for i in range(2, current_sheet.max_row+1):
current_sheet[f'F{i}'] = f"=SUMIFS('C:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1'!$G:$G,'C:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1'!$F:$F,A{i},'C:\Users\xujinPycharmProjects\pythonProject2\[sales.xlsx]Sheet1'!$L:$L,C{i})"
current_sheet[f'G{i}'] = f'=IFERROR(IF(E{i}>0,E{i}/(0{i}/30),0),"有库存无销售")'
wb.save(filename="stock1.xlsx")