Экспорт в Excel простым способом (но не CSV) - PullRequest
2 голосов
/ 16 ноября 2009

Вчера я нашел это How-To при экспорте данных в таблицы Excel путем простого создания HTML. Выглядит как простой способ экспорта ячеек с форматированием, чего нельзя достичь, используя только формат CSV.

Моя идея состояла в том, чтобы обработать некоторые данные в приложении Java, экспортировать результаты в электронную таблицу Excel и использовать возможности Excel для дальнейшего анализа данных, рисования диаграмм и т. Д. (Избегайте повторной реализации мощных функций Excel). Однако прежде чем экспортировать данные, я хотел покрасить фон некоторых ячеек. Функция условного форматирования в Excel будет недостаточной (плюс, я не хочу делать это вручную). Я нахожу довольно удобным подготовить электронную таблицу со всем форматированием в приложении Java и перейти оттуда в Excel.

Подход, упомянутый в How-To , прост и работает хорошо, за исключением двух проблем. Я надеялся, что некоторые из вас уже имели опыт работы с этим и смогут пролить свет на эту проблему.

  1. Окрашивание отдельных ячеек, таких как <td bgcolor="#ff2323">, будет выглядеть именно так, как я хочу, когда я открываю файл XLS в Firefox, но Excel меняет цвета на то, что я считаю, они называют «веб-безопасной» палитрой цветов. Это означает, что вместо 256 различных оттенков красного я получаю «красный», «фуксия», «розовый», «оранжевый», «светло-желтый» и «белый». Есть ли способ, чтобы остановить это преобразование цвета?

  2. Когда я открываю файл XLS (который на самом деле представляет собой просто HTML внутри), все выглядит хорошо, но тонкие серые линии, разделяющие отдельные ячейки, исчезают, и я не могу понять, как их включить ». Что с этим?

Проблема 1 - это главная проблема, которую я действительно хотел бы решить.

Ответы [ 3 ]

5 голосов
/ 16 ноября 2009

Вы можете использовать специальные параметры форматирования XML для принудительного применения линий сетки внутри электронной таблицы:

<html xmlns:o="urn:schemas-microsoft-com:office:office"
                        xmlns:x="urn:schemas-microsoft-com:office:excel"
                         xmlns="http://www.w3.org/TR/REC-html40">
<head>
<xml>
 <x:ExcelWorkbook>
  <x:ExcelWorksheets>
   <x:ExcelWorksheet>
    <x:Name>Sheet</x:Name>
    <x:WorksheetOptions>
     <x:Print>
        <x:Gridlines />
     </x:Print>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
  </x:ExcelWorksheets>
 </x:ExcelWorkbook>
</xml>
</head>                      
<body>
<table>
<tr><td bgcolor="#ff2323">hello</td></tr>
</table>
</body>
</html>                      

В более общем виде, смотрите эту ссылку MSDN для получения подробной документации по этому формату.

1 голос
/ 19 ноября 2009

Я бы на самом деле ожидал, что Excel не предоставит вам стандартные веб-безопасные цвета, а выберет из своей собственной палитры (которая даже меньше; только 56 слотов в «традиционных» версиях Excel, возможно, 2007 год поднял это). Можно выбрать свои собственные пользовательские цвета в Excel (Инструменты-> Параметры-> Цвет в версии, которую я использую на работе), но каждый новый выбранный цвет заменит одно из «заводских» значений по умолчанию.

Я подозреваю, что при автоматическом импорте из HTML в Excel просто не требуется настраивать эти цвета для вас, тем более что существует вероятность того, что ваш псевдо-файл HTML содержит больше цветов, чем палитра Excel слоты. Тогда он все равно будет разочарован. Разработчики Excel, вероятно, решили, что будет проще и проще разочаровать вас заранее. ;)

1 голос
/ 16 ноября 2009

Для линий сетки ...

  1. Перейдите в Инструменты > Параметры , затем на вкладке Вид установите флажок Сетка

(на основе Excel 2003)

...