我有一个简单的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)。
感谢您的帮助!非常感谢!
答案 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。但鉴于你必须访问单元格格式,我没有看到任何其他选择。