Экспорт CSV с автопропусканием по каждой ячейке - PullRequest
2 голосов
/ 11 марта 2020

У меня проблема с настройкой автоматической ширины. Я хочу разместить весь текст в одной ячейке, где все значения можно просматривать без дополнительных нажатий. Мой экспортированный CSV в настоящее время выглядит следующим образом:

Exported CSV

И вот чего я хочу достичь:

Achieve state

До сих пор я пробовал преобразовать этот массив данных ( в формате )

[
  ["Play Date","Round","Result Virtual","Result Data"],
  ["=\"2020-03-04 00:48:00\"","16","\"[LEFT, LINE3, EVEN]\"","\"[LEFT, LINE3, EVEN]\""],
  ["=\"2020-03-04 00:51:00\"","17","\"[LEFT, LINE4, ODD]\"","\"[LEFT, LINE4, ODD]\""],
  ["=\"2020-03-04 00:54:00\"","18","\"[LEFT, LINE3, EVEN]\"","\"[LEFT, LINE3, EVEN]\""],
  ["=\"2020-03-04 00:57:00\"","19","\"[RIGHT, LINE4, EVEN]\"","\"[RIGHT, LINE4, EVEN]\""]
]

в формат CSV и затем загрузить:

data.forEach(rowItem => {
  rowItem.forEach(colItem => {
    csvString += `${colItem},`
  })
  csvString += '\r\n'
})

csvString = 'data:application/csv,' + encodeURIComponent(csvString)
var x = document.createElement('A')
x.setAttribute('href', csvString)
x.setAttribute('download', `${new Date()}.csv`)
document.body.appendChild(x)
x.click()

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Значения, разделенные запятыми (CSV) , как следует из названия, - не более чем текст. разделенные запятыми. Согласно Википедии, CSV - это

текстовый файл с разделителями, который использует запятую для разделения значений. Каждая строка файла представляет собой запись данных. Каждая запись состоит из одного или нескольких полей, разделенных запятыми. Использование запятой в качестве разделителя полей является источником имени для этого формата файла. Файл CSV обычно хранит табличные данные (числа и текст) в виде простого текста, и в этом случае каждая строка будет иметь одинаковое количество полей.

Все, что у него есть, - это одна двумерная матрица данных. То, что вы пытаетесь включить, - это включить некоторые данные о формате отображения этих данных в конкретное c приложение (превосходно, как кажется). Я боюсь, что это невозможно без добавления данных, связанных с форматированием представления фактических данных, в этих приложениях. Содержимое файла + форматирование данных -> .csv нарушит основополагающую идею CSV (см. , чтобы узнать больше о CSV и , это о RF C в CSV ). Вот почему существуют определенные форматы приложения c, такие как .xls.

Я не думаю, что можно (и нужно когда-либо) делать то, что вы пытаетесь делать в формате .csv. Лучший способ, которым вы можете воспользоваться, - это выбрать другой формат файла, который лучше соответствует вашим требованиям (например, .xls).

0 голосов
/ 11 марта 2020

Вы можете попробовать этот API RangeFormat.autofitColumns(), вот пример кода, который вы можете попробовать

async function main(context: Excel.RequestContext) {
  // Auto fit the columns of range: Sheet1!A:A
  let workbook = context.workbook;
  let worksheets = workbook.worksheets;
  let selectedSheet = worksheets.getActiveWorksheet();
  selectedSheet.getRange("A:A").format.autofitColumns();

Документ можно найти по адресу https://docs.microsoft.com/en-us/javascript/api/excel/excel.rangeformat?view=excel-js-preview#autofitcolumns -

...