将没有内容的彩色单元格从Excel导出为CSV

时间:2012-01-03 22:45:53

标签: excel

我有一个简单的Excel电子表格,其中包含标题和行,如下例所示。第1,2和3列下的所有单元格的单元格颜色没有任何单元格内容。

如果如下例所示,第3列存在第3列,那么Col3下Item2的相应单元格与其他单元格的颜色不同

     | Col1 | Col2 | Col3 |
---------------------------
Item1|      |      |      |
Item2|      |      |      |

我的问题是:有没有办法将电子表格导出到CSV文件,以便任何与其他单元格颜色不同的单元格保存在CSV文件中?如果没有,有没有办法让Excel将实际的单元格背景颜色导出到CSV?

我计划将CSV导入数据库。我可以运行if / then case for any kind content我可以强制Excel导出到CSV,比如bit(1)或varchar(FF0000)。

感谢您的帮助!非常感谢!

3 个答案:

答案 0 :(得分:2)

CSV仅限文字,不包含任何颜色或任何其他格式。但是,您可以将颜色值存储在项目旁边的字符串表示中。

答案 1 :(得分:0)

我认为你将不得不使用宏来完成你提出问题的方式。

我通常处理此类问题的方法是使用条件格式与单元格中的值。例如,如果我希望单元格为黄色,我将编写一条规则,如果它看到值为“Y”,则填充单元格并将文本着色为黄色。这样事情看起来一样,但我可以很好地导出/导入。

希望这有帮助

答案 2 :(得分:0)

多年来我多次使用Excel的csv文件,并且经常发现Excel本机csv处理非常善变。我倾向于编写自己的csv处理程序。

这是一个例子。您需要对其进行修改以满足您的需求。

Sub SaveAsCsv(ws As Worksheet, Name As String)
    Dim fso As FileSystemObject
    Dim fl As TextStream
    Dim rw As Long
    Dim ln As String
    Dim Name as str 

    On Error GoTo EH

    Name = "Your Path and File name"    
    Set fso = New FileSystemObject
    Set fl = fso.CreateTextFile(Name, True)
    For each rw in ws.UsedRange.Rows
        ' Modify this to match your Items colunmn number
        If rw.Cells(1,ItemColumnNumber) <> "" then
            ln = ""
            ' Modify this to match your colunmn numbers
            For col = Col1 To LastCol
                ln = ln & rw.Cells(1,col).Interior.Color & ","
                ' or process the colour into whatever code you want                    
            Next
            fl.WriteLine Left(ln, Len(ln) - 1)
        End If
    Next rw
EH:
    On Error Resume Next
    If Not fl Is Nothing Then fl.Close
    Set fl = Nothing
    Set fso = Nothing

End Sub

它包含对Microsoft Scripting Runtime的早期绑定引用,因此如果需要,可以设置引用或更改为后期绑定。添加您需要的任何错误处理

注意:迭代像这样的单元格区域对于大范围来说可能是慢esp。但鉴于你必须访问单元格格式,我没有看到任何其他选择。