我已经使用编程语言(如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中为您提供漂亮的图片。
答案 0 :(得分:5)
您可以使用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')
此行在功能上与上面提供的相同。
答案 1 :(得分:0)
如果你想使用PHP,至少有两个不同的工具包,它们将在不使用COM对象的情况下生成Excel文件: PhpExcel和ExcelWriterXML。
例如,对于ExcelWriterXML,更改背景颜色为$format->bgColor('Black');
,请参阅网站上的完整示例。
另一种方法是通过像TinyButStrong这样的模板引擎生成xlsx文件(里面是XML)。