Руби CSV слияния клеток - PullRequest
1 голос
/ 16 мая 2011

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

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

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

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

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

1 Ответ

4 голосов
/ 16 мая 2011

Вы не можете создать файл 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>
...