如何使用League\Csv库为CSV文件中的标头添加样式?

0pizxfdo  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(101)

我目前正在使用PHP中的League\Csv库从应用程序中的数据生成CSV文件。我想在生成的CSV文件的标题中添加样式(如粗体或文本颜色),使其在Microsoft Excel等电子表格应用程序中打开时脱颖而出。
目前,我使用以下PHP代码来生成CSV文件:

public function export_data_as_csv() {
        $projectFeature     = new ProjectSingle();
        $role_label         = $projectFeature->role_label;
        
        $estimations = $projectFeature->getEstimations($_POST['project_id']);
        
        // Instantiate a CSV object
        $csv = Writer::createFromString('');
        
        // Header CSV
        $header = [
            'Name', 
            'Est. Hours', 
            'Estimator', 
            'Assigned', 
            'Note', 
            'Problem'
        ];
        $csv->insertOne($header);

        $total_estimation = 0;
        foreach ($estimations as $division => $estimation) {
            if (!empty($estimation)) {
                // Grup parent
                $parent_data = [
                    $role_label[$division],
                    $estimation['post_estimation'],
                    $estimation['estimator'],
                    '', // Assigned
                    '', // Note
                    '', // Problem
                ];
                $csv->insertOne($parent_data);

                foreach ($estimation['timeline'] as $task_name => $timeline) {
                    // Grup konten
                    $content_data = [
                        $task_name,
                        $timeline['est_hours'],
                        '', // Estimator
                        $timeline['est_assigned'],
                        $timeline['est_notes'],
                        $timeline['problems_url'],
                    ];
                    $csv->insertOne($content_data);
                }

                $total_estimation += $estimation['post_estimation'];
            }
        }
        
        $total = ['TOTAL', $total_estimation, '', '', '', ''];
        $csv->insertOne($total);
        
        $file_name = $_POST['project_name'] . '-estimation.csv';
        // $csv->output($file_name);

        $csvData = $csv->toString(); // Get CSV data as a string
        header('Content-Type: text/csv');
        header('Content-Disposition: attachment; filename="' . $file_name . '"');
        echo $csvData;
        $_POST = [];
        exit();
    }

但是,标题显示为纯文本,没有任何特殊样式。如何在生成的CSV文件中添加样式?
我尝试过的:

  • 我已经查看了League\Csv库的文档,但找不到关于向标题添加样式的信息。
  • 我尝试在标题中使用和等HTML标记,但在Excel中打开时无法正常工作。

我所期望的:

  • 我希望有一种方法可以使用League\Csv库或其他方法将样式或格式应用于CSV文件中的头。我的目标是在Excel中打开CSV文件时,使标题文本显示为粗体。
3htmauhk

3htmauhk1#

CSV不支持任何类型的样式。如果您需要样式,请使用.xlsx,.ods或其他支持的格式。

相关问题