2012-01-03 3 views
1

У меня есть простая электронная таблица Excel с заголовками и строками, как в примере ниже. Все ячейки под столбцами 1,2 и 3 имеют цвет ячейки , но не содержат содержимого ячеек.Экспорт цветных ячеек без содержимого из Excel в CSV

Если, как показано в примере ниже, столбец3 существует для Item2, то соответствующая ячейка для Item2 под Col3 равна другим цветом, чем другие ячейки.

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

Мои вопросы: есть ли способ экспортировать таблицу в файл CSV, так что любая клетка окрашена в отличие от других клеток сохраняется в CSV файл? Если нет, есть ли способ заставить Excel экспортировать фактические цвета фона ячейки в CSV?

Я планирую импортировать CSV в базу данных. Я мог бы запускать if/then case для любого контента, который я могу заставить 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 выполнения сценариев, поэтому установить ссылку или изменить поздно неизбежно, если вы хотите. Добавьте необходимую обработку ошибок

Примечание: повторение таких диапазонов ячеек может быть медленным esp для больших диапазонов. Но, учитывая, что вам нужно получить доступ к форматам ячеек, я не вижу другого выбора.

Смежные вопросы