Руби CSV слияния клеток

Предположим, у меня есть много объектов, у каждого есть UID собственность и массив кредитных карт НЕТ card_nos,

Я хочу записать информацию в файл CVS(Excel) таким образом, чтобы ячейки с UID объединены в один. Один UID охватывает столько строк, сколько у него кредитных карт, но не менее одной.

Вот пример, Пользователь 001 имеет 3 карты, поэтому файл cvs будет выглядеть следующим образом:

+ ------------- +
| UID | Карта № |
--------------+
|     | Card1 |
      --------+
| 001 | Card2 |
      --------+
|     | Card3 |
--------------+

Есть идеи? Заранее спасибо.

1 ответ

Решение

Вы не можете создать файл CSV, который делает это - формат CSV не поддерживает это.

Попробуйте по-другому, и вы увидите: создайте лист с описанным форматированием и сохраните его как CSV. Вы получите предупреждение, начиная с

"[whatever you called it/] may contain features that are not compatible with CSV (Comma delimited)...."

Примите ограничение, и вы получите файл CSV. Моя выглядела так:

UID,Card#
001,Card1
,Card2
,Card3

... который, когда я перезагрузил его в Excel, действительно потерял слияние, как я ожидал:

+------+-------+
| UID  | Card# |
+------+-------+
| 1    | Card1 |
+------+-------+
|      | Card2 |
+------+-------+
|      | Card3 |
+------+-------+

Вы можете, однако, попасть туда с помощью HTML, если в вашем приложении есть смысл - следующий HTML-код будет загружен объединенной ячейкой UID, как описано (обратите внимание на использование "rowspan"атрибут):

<table>
  <thead>
    <tr>
      <td>UID</td>
      <td>Card#</td>
    </tr>
  </thead>
  <tbody>
      <tr>
        <td rowspan="3">001</td>
        <td>Card1</td>
      </tr>
      <tr>
        <td>Card2</td>
      </tr>
      <tr>
        <td>Card3</td>
      </tr>
  </tbody>
</table>
Другие вопросы по тегам