跳到内容
当前位置:首页>PPT>第164讲:自动创建产品介绍PPT:VBA与Python实战详解,轻松应对上百款新品上架

第164讲:自动创建产品介绍PPT:VBA与Python实战详解,轻松应对上百款新品上架

  • 2026-11-02 15:42:05
第164讲:自动创建产品介绍PPT:VBA与Python实战详解,轻松应对上百款新品上架

电商运营中,新品上架意味着需要为每个产品制作介绍PPT。手动操作耗时耗力,且容易出错。本文将详细介绍如何通过VBA和Python实现自动化生成,提升效率,降低错误率。

一、业务背景与自动化需求

在电商运营中,新品上架是常态。每个新产品都需要制作介绍PPT,用于内部培训、营销推广和客户展示。传统手工制作方式效率低下,一致性差,且容易出错。

电商企业通常面临以下痛点:

  • 产品数量多:每月上百款新品需要制作PPT

  • 信息更新频繁:价格、库存、描述等信息经常变动

  • 格式要求统一:品牌标识、字体、色彩需要保持一致

  • 时间紧迫:营销活动往往要求快速上架新品

自动化生成PPT的价值:

  • 效率提升:从数小时缩短到几分钟

  • 一致性保证:统一的版式和风格

  • 错误减少:自动化数据填充降低人为错误

  • 易于更新:数据驱动,修改源头数据即可更新所有PPT

二、VBA方案:Office原生自动化解决方案

VBA作为Microsoft Office的原生脚本语言,提供了深度集成的PPT自动化能力。

2.1 环境准备与基础设置

VBA开发环境配置:

' 开启VBA开发环境' 1. 打开PowerPoint,按Alt+F11进入VBA编辑器' 2. 插入模块,开始编写代码Sub EnableVBAEnvironment()    ' 设置VBA项目属性    ThisProject.Name = "PPT自动化生成"    ' 确保引用正确    Call CheckReferencesEnd SubSub CheckReferences()    ' 检查必要引用是否已加载    On Error Resume Next    Dim ref As Reference    For Each ref In ThisProject.References        If ref.Name = "Microsoft PowerPoint 16.0 Object Library" Then            Exit Sub        End If    Next ref    ' 如果没有找到引用,需要手动添加    MsgBox "请引用Microsoft PowerPoint对象库", vbInformationEnd Sub

2.2 核心代码实现

完整的VBA自动化生成模块:

Sub GenerateProductPPT()    Dim pptApp As PowerPoint.Application    Dim pptPres As PowerPoint.Presentation    Dim pptSlide As PowerPoint.Slide    Dim productLayout As CustomLayout    Dim i As Integer    ' 错误处理    On Error GoTo ErrorHandler    ' 创建PowerPoint应用实例    Set pptApp = New PowerPoint.Application    pptApp.Visible = True  ' 设置为True可查看生成过程    ' 打开模板文件    Set pptPres = pptApp.Presentations.Open("C:\模板\产品介绍模板.pptx")    ' 获取产品布局    Set productLayout = pptPres.Designs(1).SlideMaster.CustomLayouts(1)    ' 读取产品数据    Dim productData As Variant    productData = GetProductDataFromExcel("C:\数据\产品清单.xlsx")    ' 循环生成每个产品的幻灯片    For i = 1 To UBound(productData, 1)        ' 创建新幻灯片        Set pptSlide = pptPres.Slides.AddSlide(pptPres.Slides.Count + 1, productLayout)        ' 填充内容        Call FillSlideContent(pptSlide, productData, i)    Next i    ' 保存演示文稿    pptPres.SaveAs "C:\输出\产品介绍_" & Format(Now(), "yyyy-mm-dd-hh-mm") & ".pptx"    MsgBox "PPT生成完成!共生成 " & UBound(productData, 1) & " 个产品介绍。", vbInformation    Exit SubErrorHandler:    MsgBox "错误号: " & Err.Number & vbCrLf & "错误描述: " & Err.Description, vbCriticalEnd SubSub FillSlideContent(slide As PowerPoint.Slide, productData As Variant, index As Integer)    ' 填充幻灯片内容    Dim shape As shape    Dim productName As String    Dim productDesc As String    Dim imgPath As String    ' 获取产品信息    productName = productData(index, 1)  ' 产品名称    productDesc = productData(index, 2)  ' 产品描述    imgPath = productData(index, 3)      ' 图片路径    ' 遍历幻灯片中的所有形状,填充内容    For Each shape In slide.Shapes        Select Case shape.PlaceholderFormat.Type            Case ppPlaceholderTitle  ' 标题占位符                shape.TextFrame.TextRange.Text = productName            Case ppPlaceholderBody   ' 正文占位符                shape.TextFrame.TextRange.Text = productDesc            Case ppPlaceholderPicture  ' 图片占位符                If Dir(imgPath) <> "" Then  ' 检查图片文件是否存在                    slide.Shapes.AddPicture imgPath, msoFalse, msoTrue, shape.Left, shape.Top, shape.Width, shape.Height                    shape.Delete  ' 删除原始占位符                End If        End Select    Next shapeEnd SubFunction GetProductDataFromExcel(filePath As String) As Variant    ' 从Excel读取产品数据    Dim excelApp As Excel.Application    Dim excelWB As Excel.Workbook    Dim excelWS As Excel.Worksheet    Dim dataRange As Excel.Range    Dim productData As Variant    Set excelApp = New Excel.Application    excelApp.Visible = False  ' 隐藏Excel窗口    ' 打开工作簿    Set excelWB = excelApp.Workbooks.Open(filePath)    Set excelWS = excelWB.Sheets(1)    ' 获取数据范围    Set dataRange = excelWS.UsedRange    productData = dataRange.Value    ' 清理资源    excelWB.Close SaveChanges:=False    excelApp.Quit    GetProductDataFromExcel = productDataEnd Function

2.3 高级功能与错误处理

增强的VBA解决方案:

Sub AdvancedProductPPTGenerator()    Dim pptApp As PowerPoint.Application    Dim pptPres As PowerPoint.Presentation    Dim successCount As Integer    Dim errorCount As Integer    Dim startTime As Double    Dim endTime As Double    ' 记录开始时间    startTime = Timer    On Error GoTo ErrorHandler    ' 初始化计数器    successCount = 0    errorCount = 0    Set pptApp = New PowerPoint.Application    pptApp.Visible = False  ' 后台运行,提升速度    ' 创建新演示文稿    Set pptPres = pptApp.Presentations.Add    ' 读取产品数据    Dim productList As Collection    Set productList = GetStructuredProductData("C:\数据\产品清单.xlsx")    ' 处理每个产品    Dim product As Variant    For Each product In productList        If GenerateSingleProductSlide(pptPres, product) Then            successCount = successCount + 1        Else            errorCount = errorCount + 1            ' 记录错误日志            Call LogError("产品处理失败: " & product("名称"))        End If    Next product    ' 应用设计模板    pptPres.ApplyTemplate "C:\模板\企业设计模板.potx"    ' 保存结果    Dim outputPath As String    outputPath = "C:\输出\产品介绍_批量生成.pptx"    pptPres.SaveAs outputPath    endTime = Timer    ' 生成报告    MsgBox "生成完成!" & vbCrLf & _           "成功: " & successCount & " 个" & vbCrLf & _           "失败: " & errorCount & " 个" & vbCrLf & _           "耗时: " & Format(endTime - startTime, "0.00") & " 秒", _           vbInformation    ' 清理资源    pptPres.Close    pptApp.Quit    Exit SubErrorHandler:    MsgBox "生成过程中出现错误: " & Err.Description, vbCriticalEnd Sub

三、Python方案:灵活强大的跨平台解决方案

Python凭借python-pptx库,提供了更现代化的PPT自动化解决方案。

3.1 环境配置与基础安装

安装必要的Python库:

pip install python-pptx pandas openpyxl pillow

基础环境设置:

from pptx import Presentationfrom pptx.util import Inches, Ptfrom pptx.enum.text import PP_ALIGNfrom pptx.dml.color import RGBColorimport pandas as pdimport osfrom pathlib import Pathclass PPTGenerator:    """PPT生成器基类"""    def __init__(self, template_path=None):        if template_path and os.path.exists(template_path):            self.prs = Presentation(template_path)        else:            self.prs = Presentation()        self.setup_logging()        self.setup_directories()    def setup_logging(self):        """设置日志系统"""        import logging        logging.basicConfig(level=logging.INFO)        self.logger = logging.getLogger(__name__)    def setup_directories(self):        """设置目录结构"""        self.output_dir = Path("output")        self.temp_dir = Path("temp")        self.output_dir.mkdir(exist_ok=True)        self.temp_dir.mkdir(exist_ok=True)

3.2 核心生成逻辑

完整的Python PPT生成类:

class ProductPPTGenerator(PPTGenerator):    """产品PPT生成器"""    def __init__(self, template_path=None):        super().__init__(template_path)        self.product_layout = self.find_product_layout()    def find_product_layout(self):        """查找产品介绍版式"""        for layout in self.prs.slide_layouts:            if layout.name and "产品" in layout.name:                return layout        # 如果没有找到特定版式,使用第一个内容版式        return self.prs.slide_layouts[1]    def load_product_data(self, data_source):        """加载产品数据"""        if isinstance(data_source, str):            if data_source.endswith('.xlsx') or data_source.endswith('.xls'):                return pd.read_excel(data_source)            elif data_source.endswith('.csv'):                return pd.read_csv(data_source)        elif isinstance(data_source, pd.DataFrame):            return data_source        raise ValueError("不支持的数据源格式")    def generate_batch_products(self, data_source, output_path=None):        """批量生成产品PPT"""        df = self.load_product_data(data_source)        success_count = 0        error_count = 0        for index, row in df.iterrows():            try:                self.add_product_slide(row)                success_count += 1                self.logger.info(f"成功添加产品: {row['产品名称']}")            except Exception as e:                error_count += 1                self.logger.error(f"添加产品失败 {row['产品名称']}: {str(e)}")        # 保存文件        if not output_path:            output_path = self.output_dir / f"产品介绍_批量_{len(df)}款.pptx"        self.prs.save(output_path)        self.logger.info(f"PPT生成完成!成功: {success_count}, 失败: {error_count}")        return success_count, error_count    def add_product_slide(self, product_data):        """添加单个产品幻灯片"""        slide = self.prs.slides.add_slide(self.product_layout)        # 填充占位符内容        self.fill_placeholders(slide, product_data)        return slide

3.3 占位符处理与内容填充

智能占位符填充系统:

def fill_placeholders(self, slide, product_data):    """填充占位符内容"""    for shape in slide.shapes:        if not shape.has_text_frame and not shape.is_placeholder:            continue        placeholder = shape.placeholder_format        if placeholder:            self.fill_specific_placeholder(shape, placeholder.type, product_data)def fill_specific_placeholder(self, shape, placeholder_type, product_data):    """根据占位符类型填充内容"""    try:        if placeholder_type == 1:  # 标题            shape.text = product_data.get('产品名称', '')            self.format_title(shape)        elif placeholder_type == 2:  # 正文            description = product_data.get('产品描述', '')            specifications = product_data.get('产品规格', '')            full_text = f"{description}\n\n规格参数:\n{specifications}"            shape.text = full_text            self.format_body(shape)        elif placeholder_type == 7:  # 图片            img_path = product_data.get('图片路径', '')            if img_path and os.path.exists(img_path):                self.insert_picture(shape, img_path)            else:                self.logger.warning(f"图片不存在: {img_path}")        elif placeholder_type == 13:  # 图表            sales_data = product_data.get('销售数据', {})            if sales_data:                self.insert_chart(shape, sales_data)    except Exception as e:        self.logger.error(f"填充占位符失败: {str(e)}")def insert_picture(self, placeholder, img_path):    """插入图片到占位符"""    # 获取占位符的位置和尺寸    left = placeholder.left    top = placeholder.top    width = placeholder.width    height = placeholder.height    # 添加图片    slide = placeholder.parent    slide.shapes.add_picture(img_path, left, top, width, height)    # 删除原始占位符    placeholder.element.getparent().remove(placeholder.element)def format_title(self, shape):    """格式化标题"""    text_frame = shape.text_frame    for paragraph in text_frame.paragraphs:        for run in paragraph.runs:            run.font.size = Pt(24)            run.font.bold = True            run.font.color.rgb = RGBColor(0, 0, 0)  # 黑色def format_body(self, shape):    """格式化正文"""    text_frame = shape.text_frame    text_frame.word_wrap = True  # 自动换行    for paragraph in text_frame.paragraphs:        paragraph.alignment = PP_ALIGN.LEFT        for run in paragraph.runs:            run.font.size = Pt(14)            run.font.color.rgb = RGBColor(64, 64, 64)  # 深灰色

3.4 高级功能与批量处理

企业级批量处理解决方案:

class EnterprisePPTGenerator(ProductPPTGenerator):    """企业级PPT生成器"""    def __init__(self, template_path, config=None):        super().__init__(template_path)        self.config = config or self.default_config()        self.setup_enterprise_features()    def default_config(self):        """默认配置"""        return {            'branding': {                'primary_color': RGBColor(0, 102, 204),                'secondary_color': RGBColor(255, 153, 0),                'font_family': '微软雅黑'            },            'quality_control': {                'max_slides_per_presentation': 50,                'image_min_resolution': (800, 600),                'file_size_limit_mb': 50            }        }    def generate_enterprise_presentation(self, products_data, output_path):        """生成企业级演示文稿"""        # 分批处理,避免文件过大        batch_size = self.config['quality_control']['max_slides_per_presentation']        batches = [products_data[i:i + batch_size] for i in range(0, len(products_data), batch_size)]        generated_files = []        for i, batch in enumerate(batches):            batch_pres = Presentation(self.template_path)            batch_generator = ProductPPTGenerator()            batch_generator.prs = batch_pres            # 生成当前批次            for product in batch:                batch_generator.add_product_slide(product)            # 添加品牌元素            self.apply_branding(batch_pres)            # 保存批次文件            batch_filename = output_path.parent / f"{output_path.stem}_part{i+1}{output_path.suffix}"            batch_pres.save(batch_filename)            generated_files.append(batch_filename)        return generated_files    def apply_branding(self, presentation):        """应用品牌样式"""        for slide in presentation.slides:            for shape in slide.shapes:                if shape.has_text_frame:                    self.apply_text_branding(shape)    def apply_text_branding(self, shape):        """应用文本品牌样式"""        for paragraph in shape.text_frame.paragraphs:            for run in paragraph.runs:                # 设置品牌字体和颜色                run.font.name = self.config['branding']['font_family']                if run.font.bold:                    run.font.color.rgb = self.config['branding']['primary_color']                else:                    run.font.color.rgb = self.config['branding']['secondary_color']

四、方案对比与选择指南

4.1 技术特性全面对比

特性维度

VBA方案

Python方案

优势分析

开发效率

⭐⭐⭐⭐(快速上手)

⭐⭐⭐(需要学习)

VBA学习曲线更平缓

功能强大性

⭐⭐⭐(中等)

⭐⭐⭐⭐(强大)

Python生态更丰富

跨平台性

⭐(仅Windows)

⭐⭐⭐⭐(全平台)

Python真正跨平台

维护成本

⭐⭐(较高)

⭐⭐⭐⭐(较低)

Python更易维护

集成能力

⭐⭐⭐(Office生态)

⭐⭐⭐⭐(多系统)

Python集成性更强

处理速度

⭐⭐⭐⭐(快速)

⭐⭐⭐(中等)

VBA执行效率更高

4.2 实际应用场景选择指南

选择VBA方案当:

  • 环境稳定:企业已部署Microsoft Office且版本统一

  • 快速上线:需要立即投入使用的解决方案

  • 简单需求:基础的产品介绍生成,无需复杂逻辑

  • 非技术团队:运营团队熟悉Office但不熟悉编程

选择Python方案当:

  • 复杂需求:需要高级格式化、数据验证

  • 跨平台部署:需要在不同操作系统上运行

  • 系统集成:需要与电商平台、数据库深度集成

  • 大规模处理:需要处理上千款产品的批量生成

五、实战案例:电商新品上架自动化

5.1 业务背景与挑战

某电商企业每月上架300+新品,传统PPT制作方式面临挑战:

  • 人力成本高:3名设计师全职制作产品PPT

  • 制作周期长:从数据准备到PPT完成需要3-5天

  • 一致性差:不同设计师制作的PPT风格不统一

  • 更新困难:价格调整、库存变更需要重新制作

5.2 基于Python的完整解决方案

电商新品PPT自动化平台:

class EcommercePPTGenerator(EnterprisePPTGenerator):    """电商PPT生成器"""    def __init__(self, template_path, ecommerce_config):        super().__init__(template_path)        self.ecommerce_config = ecommerce_config        self.setup_ecommerce_integration()    def setup_ecommerce_integration(self):        """设置电商平台集成"""        self.platform_adapters = {            'taobao': TaobaoAdapter(),            'jd': JDAdapter(),            'pdd': PDDAdapter()        }    def generate_from_ecommerce_data(self, platform, product_ids, output_path):        """从电商平台数据生成PPT"""        adapter = self.platform_adapters.get(platform)        if not adapter:            raise ValueError(f"不支持的平台: {platform}")        # 获取产品数据        products_data = []        for product_id in product_ids:            try:                product_data = adapter.get_product_data(product_id)                products_data.append(product_data)            except Exception as e:                self.logger.error(f"获取产品数据失败 {product_id}: {str(e)}")        # 生成PPT        return self.generate_enterprise_presentation(products_data, output_path)    def generate_with_ai_enhancement(self, products_data, output_path):        """AI增强的PPT生成"""        enhanced_data = []        for product in products_data:            # AI优化产品描述            enhanced_description = self.enhance_with_ai(product['description'])            product['enhanced_description'] = enhanced_description            # AI选择最佳图片            best_image = self.select_best_image_with_ai(product['images'])            product['selected_image'] = best_image            enhanced_data.append(product)        return super().generate_enterprise_presentation(enhanced_data, output_path)# 使用示例def ecommerce_demo():    """电商应用演示"""    config = {        'template_path': 'templates/ecommerce_template.pptx',        'ecommerce_config': {            'auto_crop_images': True,            'optimize_for_mobile': True,            'add_qr_codes': True        }    }    generator = EcommercePPTGenerator(**config)    # 从淘宝平台获取产品数据    product_ids = ['123456', '789012', '345678']    result = generator.generate_from_ecommerce_data('taobao', product_ids, '新品介绍.pptx')    return resultif __name__ == "__main__":    ecommerce_demo()

测试题

  1. 在VBA方案中,如何处理图片占位符的替换?当产品图片不存在时,应该采取什么备选方案?

  2. Python的python-pptx库中,占位符(placeholder)与普通形状(shape)的主要区别是什么?在自动化生成过程中如何正确识别和利用占位符?

  3. 当需要为不同品类的产品(如服装、电子产品、食品)应用不同的PPT版式时,两种方案各应该如何设计架构来实现这种灵活性?

  4. 在大规模批量生成过程中(如1000+产品),Python方案可能遇到什么性能瓶颈?应该采取什么优化策略?

  5. 请设计一个混合架构方案,利用VBA快速原型设计和模板制作,通过Python进行大规模批量生成,并说明这种架构的数据流和接口设计。


答案

  1. VBA图片占位符处理:通过PlaceholderFormat.Type属性识别图片占位符(ppPlaceholderPicture),使用Shapes.AddPicture方法插入图片。当图片不存在时,显示默认占位图,记录错误日志,并继续处理后续产品。

  2. 占位符与普通形状区别:占位符是模板中预定义的特殊形状,具有特定类型和用途;普通形状无此特性。通过shape.is_placeholder判断,使用placeholder_format.type获取类型。占位符能保持版式一致性。

  3. 多版式架构设计:VBA通过CustomLayouts集合管理不同版式,根据产品类别字段选择对应版式。Python可创建版式映射字典,使用layout.name或自定义属性进行匹配,支持动态版式选择。

  4. 性能优化策略:内存管理:分批处理,及时释放资源;图片优化:预处理图片尺寸格式;异步处理:使用多进程并行生成;缓存机制:缓存模板解析结果。

  5. 混合架构设计:VBA前端提供模板设计和快速预览;Python后端处理数据准备和批量生成;通过JSON配置文件传递版式信息和生成参数;采用文件监视器实现异步协作。


希望这篇详细的自动化PPT生成指南能帮助您提升电商运营效率!如果觉得本文有帮助,请点赞、收藏、转发支持一下!

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-11-08 03:15:28 HTTP/1.1 GET : http://h.sjds.net/a/468197.html
  2. 运行时间 : 0.087660s [ 吞吐率:11.41req/s ] 内存消耗:4,348.78kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cea446d6d3345aa9dfa06356c3e4dca6
  1. /www/wwwroot/h.sjds.net/public/index.php ( 0.79 KB )
  2. /www/wwwroot/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /www/wwwroot/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /www/wwwroot/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /www/wwwroot/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /www/wwwroot/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /www/wwwroot/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /www/wwwroot/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /www/wwwroot/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /www/wwwroot/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /www/wwwroot/h.sjds.net/app/common.php ( 0.03 KB )
  27. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /www/wwwroot/h.sjds.net/config/app.php ( 0.95 KB )
  30. /www/wwwroot/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /www/wwwroot/h.sjds.net/config/console.php ( 0.23 KB )
  32. /www/wwwroot/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /www/wwwroot/h.sjds.net/config/database.php ( 2.48 KB )
  34. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /www/wwwroot/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /www/wwwroot/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /www/wwwroot/h.sjds.net/config/log.php ( 1.35 KB )
  38. /www/wwwroot/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /www/wwwroot/h.sjds.net/config/route.php ( 1.89 KB )
  40. /www/wwwroot/h.sjds.net/config/session.php ( 0.57 KB )
  41. /www/wwwroot/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /www/wwwroot/h.sjds.net/config/view.php ( 0.82 KB )
  43. /www/wwwroot/h.sjds.net/app/event.php ( 0.25 KB )
  44. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /www/wwwroot/h.sjds.net/app/service.php ( 0.13 KB )
  46. /www/wwwroot/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /www/wwwroot/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /www/wwwroot/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /www/wwwroot/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /www/wwwroot/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /www/wwwroot/h.sjds.net/route/app.php ( 1.72 KB )
  100. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /www/wwwroot/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /www/wwwroot/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /www/wwwroot/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /www/wwwroot/h.sjds.net/runtime/temp/c1d6e8c94b2c2fa10e259903674c804d.php ( 8.11 KB )
  140. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000620s ] mysql:host=172.18.0.4;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001005s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000465s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000383s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000779s ]
  6. SELECT * FROM `set` [ RunTime:0.000347s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000776s ]
  8. SELECT * FROM `article` WHERE `id` = 468197 LIMIT 1 [ RunTime:0.000574s ]
  9. UPDATE `article` SET `lasttime` = 1794078928 WHERE `id` = 468197 [ RunTime:0.002155s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000331s ]
  11. SELECT * FROM `article` WHERE `id` < 468197 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000400s ]
  12. SELECT * FROM `article` WHERE `id` > 468197 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000405s ]
  13. SELECT * FROM `article` WHERE `id` < 468197 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000479s ]
  14. SELECT * FROM `article` WHERE `id` < 468197 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000558s ]
  15. SELECT * FROM `article` WHERE `id` < 468197 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000588s ]
0.097956s