Я пришел к выводу, что app.component.ts - это первое, что отображается в вашем приложении. Вы не можете перейти к нему, очевидно, вы не можете получать параметры.
Первое решение состоит в том, что: Я должен использовать провайдера для хранения ваших пользовательских данных, а затем установить данные вашего бокового меню у провайдера.
Второе решение заключается в следующем: Использовать события, как показано ниже.
Используя события, я решил свою проблему, и мой код события работает нормально.
import { Events } from 'ionic-angular';
// first page (publish an event when a user is created)
constructor(public events: Events) {}
createUser(user) {
console.log('User created!')
this.events.publish('user:created', user, Date.now());
}
// second page (listen for the user created event after function is called)
constructor(public events: Events) {
events.subscribe('user:created', (user, time) => {
// user and time are the same arguments passed in `events.publish(user, time)`
console.log('Welcome', user, 'at', time);
});
}
Я наконец нашел проблему!
Оказывается, мы писали файл с использованием кодировки Unicode, а не ASCII или UTF-8. Изменение кодировки FileStream, похоже, решает проблему.
Спасибо всем за все ваши предложения!
Спустя почти 10 лет после исходного сообщения, Excel не улучшился в импорте файлов CSV. Однако я нашел, что это намного лучше в импорте HTML-таблиц. Так, можно использовать Python, чтобы преобразовать CSV в HTML и затем импортировать получающийся HTML к Excel.
преимущества этого подхода: (a) это работает надежно, (b) Вы не должны отправлять свои данные сторонней службе (например, листы Google), (c) никакие дополнительные "толстые" установки не требуются (LibreOffice, Числа и т.д.) для большинства пользователей, (d) более высокий уровень, чем влезать в символы CR/LF и маркеры BOM, (e) никакая потребность играть с настройками локали.
следующие шаги могут быть выполнены на любой подобной удару оболочке, пока Python 3 установлен. Хотя Python может использоваться для прямого чтения CSV, , csvkit используется, чтобы сделать промежуточное преобразование в JSON. Это позволяет нам избегать необходимости иметь дело с запутанностью CSV в нашем коде Python.
Первый, сохраните следующий сценарий как json2html.py
. Сценарий читает файл JSON из stdin и выводит его как HTML-таблицу:
#!/usr/bin/env python3
import sys, json, html
if __name__ == '__main__':
header_emitted = False
make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
print("<html><body>\n<table>")
for line in json.load(sys.stdin):
lk, lv = zip(*line.items())
if not header_emitted:
print(make_tr(lk, make_th))
header_emitted = True
print(make_tr(lv, make_td))
print("</table\n</body></html>")
Затем установите csvkit в виртуальной среде и используйте csvjson
для питания входного файла к нашему сценарию. Это - хорошая идея отключить предположение типа ячейки с -I
аргумент:
$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html
Теперь output.html
может быть импортирован в Excel. Разрывы строки в ячейках будут сохранены.
Дополнительно, можно хотеть к очистке виртуальную среду Python:
$ deactivate
$ rm -rf pyenv
Если поле содержит начальный пробел, Excel игнорирует двойные кавычки как квалификатор текста. Решение состоит в том, чтобы исключить ведущие пробелы между запятой (разделителем полей) и двойными кавычками. Например:
Сломано:
Имя, Заголовок, Описание
«Джон», «Мистер», «Мое подробное описание»
Рабочий:
Имя, Должность, Описание
«Джон», «Мистер», «Мое подробное описание»