2012-01-03 21 views
1

我有一个简单的Excel电子表格,其头部和行如下例所示。列1,2和3下的所有单元格都具有单元格颜色,但没有任何单元格内容。将没有内容的彩色单元格从Excel导出为CSV

如果如以下示例所示,第3列存在Item2,则Col3下的Item2的适当单元格为不同于其他单元格的

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

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

我打算将CSV导入数据库。我可以运行如果/然后案件的任何类型的内容,我可以强制Excel导出为CSV,就像(1)或varchar(FF0000)。

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

回答

1

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

0

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

我通常处理这种类型的问题的方式是使用条件格式与单元格中的值。例如,如果我想让单元格变成黄色,我会写出一条规则,说明它是否看到“Y”值,然后填充单元格并将文本着色为黄色。这样的方式看起来一样,但我可以很好地导出/导入。

希望这有助于

0

我已经使用CSV文件,用Excel多次多年来,通常发现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脚本运行时的早期绑定引用,因此如果需要,请将引用或更改设置为延迟绑定。添加任何您需要的错误处理

注意:像这样迭代单元格范围可能会很慢,尤其是对于大范围。但鉴于您必须访问单元格格式,我没有看到任何其他选择。

相关问题