from ntpath import join
import pandas as pd
df = pd.read_excel(r'XXX.xlsx',sheet_name='sheet1')
height,width = df.shape
# SQL文件
file = open('test.sql','a')
# 生成列名
cols = "INSERT INTO TABLENAME(" + ','.join(df.columns.astype(str)) + ")"
file.write(cols + '\n')
# 各个字段是否需要引号,此实例共14个字段,第12个为数值类型
dic = dict([(0, 'yes'), (1, 'yes'),(2, 'yes'), (3, 'yes'),(4, 'yes'), 
(5, 'yes'), (6, 'yes'),(7, 'yes'),(8, 'yes'), (9, 'yes'), (10, 'yes'),(11, 'no'),(12, 'yes'), (13, 'yes')])
# 遍历Excel数据,生成values语句
for i in range(height):
    colStr = "VALUES("
    for j in range(width):
        if(dic[j] == 'yes') :
            # 最后一个字段需要以 ), 结尾
            if(j == width - 1):
                colStr += "'" + str(df.values[i][j]).strip() + "'),"
            else :
                colStr += "'" + str(df.values[i][j]).strip() + "',"
        else :
            if(j == width - 1):
	        # 数值转换为字符串时需要保留两位小数
                colStr += "%.2f),"%(df.values[i][j])
            else :
                colStr += "%.2f,"%(df.values[i][j])
    # 最后一行数据截去末尾的逗号
    if(i == height-1) :
        colStr = colStr[0:-1]
    # 处理null值
    file.write(colStr.replace('(null)','null').replace("'null'",'null') + '\n')
file.close

Q.E.D.