【问题标题】:How to change colour of cells in Excel using programming languages如何使用编程语言更改 Excel 中单元格的颜色
【发布时间】:2014-08-19 15:43:53
【问题描述】:

我已经在 Google 上搜索了一段时间,以了解使用 C++ 或 PHP 等编程语言创建 excel 文件(*.xlsx,而不是 csv 文件)的方法。这是一个例子,http://www.the-art-of-web.com/php/dataexport/

但理想情况下,我希望能够为每个单元格指定颜色。例如,在使用 COM 对象 Excel.Application 的 VBScript 中,代码如下所示:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False
Set objWorkbook = objExcel.Workbooks.Add
Set objWorksheet = objWorkbook.Worksheets(1)
With objWorksheet
.Cells(1,1).Interior.Color=RGB(245,245,245)
...
...
...
End With
objWorkbook.SaveAs("sample.xlsx")
objExcel.Quit

如何在不使用 COM 对象的情况下做到这一点?我需要程序独立于平台工作,所以 COM 对象不是一个好的选择。

更新:here 是一个有趣的帖子,它生成 VBS 文件并双击 VBS 文件将通过绘制不同颜色的单元格在 Excel 中为您提供漂亮的图片。

【问题讨论】:

  • 是的,VBA 不好。我想写一个在Linux下运行的C++或PHP程序
  • 如果您无法在 Linux 机器上打开 Excel,您将无法做到这一点。我能想到的唯一其他选择是使用颜色和所有内容生成必要的 XML 详细信息,然后将其转换为 .xlsx。但我不知道该怎么做,或者即使这是个好主意。

标签: excel


【解决方案1】:

您可以使用 python 和XLSX Writer module 修改单元格背景。虽然它不是您提到的 C++ 或 PHP 语言,但 Python 是跨平台的,下面的代码可以在我测试的 Fedora 机器上运行。

首先,你需要python和上面提到的模块。您可以通过以下方式安装模块:

pip install xlsxwriter

接下来,我们将修改第一个tutorial,为“Total”值提供一点颜色。

import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()

# Some data we want to write to the worksheet.
expenses = (
    ['Rent', 1000],
    ['Gas',   100],
    ['Food',  300],
    ['Gym',    50],
)

# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0

green_format = workbook.add_format()
green_format.set_pattern(1)  # This is optional when using a solid fill.
green_format.set_bg_color('#008000')

# Iterate over the data and write it out row by row.
for item, cost in (expenses):
    worksheet.write(row, col, item)
    worksheet.write(row, col + 1, cost)
    row += 1

# Write a total using a formula.
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)', green_format)

workbook.close()

添加的内容是这些行。这利用了set_bg_color 函数。

green_format = workbook.add_format()
green_format.set_pattern(1)  # This is optional when using a solid fill.
green_format.set_bg_color('green')

=SUM 行被修改为使用这种绿色格式:

worksheet.write(row, 1, '=SUM(B1:B4)', green_format)

此代码在B5 创建一个绿色单元格。

关于颜色的说明:我提供了颜色'green',因为这是映射到RGB 值的少数colors 之一。如果您需要使用这些颜色以外的颜色,您可以提供一个 RGB 值。 #008000 映射到 green

green_format.set_bg_color('#008000')

此行在功能上与上面提供的行相同。

【讨论】:

    【解决方案2】:

    如果你想使用 PHP,至少有两个不同的工具包,它们将在不使用 COM Object 的情况下生成 Excel 文件: PhpExcelExcelWriterXML

    以 ExcelWriterXML 为例,更改背景颜色为 $format->bgColor('Black'); ,请参阅网站上的完整示例。

    另一种方法是通过 TinyButStrong 之类的模板引擎生成 xlsx 文件(内部是 XML)。

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 2021-11-04
      • 2013-11-12
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多