Похожие вопросы

Как записать в CSV только определенные строки листа Excel?
Ошибки синтаксического анализа из-за специальных символов в записях DNS txt
Форматирование CSV-файла с разделителями-запятыми, чтобы заставить Excel интерпретировать значение как строку
Можно ли вставить данные в формате CSV в Excel 2007?
Как добавить префикс к каждой строке определенного столбца в файле csv с помощью командной строки в linux
Как предотвратить Excel округлить число при открытии? [дубликат]
Поворачивая CSV в строках столбцов
Разделить столбец csv на несколько столбцов, результат группы в сводной таблице
Преобразование CSV-файла с помощью sed
Автоматизировать Мастер Импорта Текста Excel?
Как преобразовать строку Excel в одну текстовую ячейку csv (обратное "текст в Столбцы)
Импорт многострочных ячеек из csv-файла в excel
Увеличение предельного размера импорта данных из csv в Excel
Как написать "NULL" в CSV из Excel для пустых полей
Создание столбца формул для столбца на листе внешних данных (csv) - как расширить до нужного количества строк?

Изменение формата даты и времени в нескольких CSV-файлах

у меня есть несколько csv-файлов с такой структурой:

text, text, 01/27/2001 01:00:00 PM

мне нужно обновить все файлы csv с этим форматом даты и времени:

text, text, 27-Jan-2001 13:00:00

есть известный умный/быстрый способ сделать это? Я попытался импортировать их в Excel, но это отдельная задача [копировать/вставлять по одному], поэтому я полагаю, что это не лучший способ сделать это. Возможно, некоторые функции в Notepadd++ [не найти]

спасибо,

5
задан D. Caan
источник

2 ответов

вот сценарий PowerShell для обновления нескольких CSV-файлов из определенной папки за один шаг.

ForEach ($file in Get-ChildItem "C:\myFolder" -filter "*.csv"){         
    Get-Content $file.Fullname | ForEach { 
        $arLine = $_ -split ","
        $date = [DateTime]$arLine[2]
        $arLine[2] = $date.ToString(" dd-MMM-yyyy HH:mm:ss")    
        [array]$arFile += $arLine -join ","
        } 
    $arFile | Out-File $file.Fullname
    clear-variable arFile           
    }

что это значит

  1. перебирать каждый файл в заданной папке и фильтровать только файлы CSV
  2. читать в каждом CSV и цикл через каждую строку
  3. разбить каждую строку на массив. Запятая-наш разделитель
  4. преобразовать строку даты e.g 01/27/2001 01:00:00 PM для объекта даты PowerShell.
  5. форматировать объект date и запишите его обратно в массив. [2] обозначает третье значение / столбец, потому что мы начинаем считать с нуля
  6. объединить все значения текущей строки, чтобы получить одну строку. Используйте запятую в качестве разделителя
  7. добавить все строки в один массив, чтобы мы могли записать их все сразу в файл
  8. перейти к следующему файлу CSV
1
отвечен nixda 2014-09-02 23:04:08
источник

самый быстрый способ - написать макрос в VBA Excel, который откроет csv-файлы, изменит форматирование и снова сохранит его как csv-файл. Попробуйте следующий курс действий:

  • Запись макроса в Excel что делает именно эту задачу one файл csv (начните запись, откройте файл, выполните форматирование и сохраните файл снова).
  • использовать это ответ SU, чтобы пройти через все файлы в каталоге, чтобы сделать задача, которую вы только что создали. Вам понадобится функция Dir и цикл While.

ваш код будет выглядеть так (Не проверял!):

Public Sub ChangeDates()
    Dim StrFile as String

    strFile = Dir("C:\Some\Location\Of\Your\Files\*.csv")
    While strFile <> ""
        # Append the stuff from the recorded macro here and adjust the filename
        # Probably something like:
        Workbooks.Open Filename:=strFile
        Columns("C:C").Select
        Selection.NumberFormat = "dd-mm-yyyy HH:mm:ss"  # or something else
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        strFile = Dir
    End While
End Sub
2
отвечен agtoever 2017-03-20 10:17:51
источник

Другие вопросы csv date-time microsoft-excel notepad++ vba