如何使用编程语言在Excel中更改单元格的颜色

我已经search了一些使用编程语言(如C ++或PHP)创buildexcel文件(* .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对象不是一个好的select。

更新: 这里是一个有趣的职位,生成的VBS文件,双击VBS文件将通过绘制不同颜色的单元格在Excel中给你一个很好的图片。

您可以使用python和XLSX Writer模块修改单元格背景。 虽然不是您提到的C ++或PHP语言,但Python是跨平台的,下面的代码在我testing过的Fedora框中工作。

首先,你需要python和上面提到的模块。 你可以这样安装模块:

 pip install xlsxwriter 

接下来,我们将修改第一个教程 ,为“总计”值提供一点颜色。

 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创build一个绿色的单元格。

Excel绿色单元格

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

 green_format.set_bg_color('#008000') 

这条线在function上与上面提供的相同。

如果你想使用PHP,至less有两个不同的工具包,它们将生成Excel文件,而不使用COM对象: PhpExcel和ExcelWriterXML 。

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

另一种方法是通过像TinyButStrong这样的模板引擎来生成xlsx文件(里面是XML)。