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:\0422\stock_rate.csv' into table stock_rate
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
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 '\n'
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 '\n'
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:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1!"$F:$F,"C:\Users\xujin\PycharmProjects\pythonProject2\[sales.xlsx]Sheet1!"$E:$E,A{i},"C:\Users\xujin\PycharmProjects\pythonProject2\[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\\xujin\PycharmProjects\\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")