Я думаю, что вам нужен контролируемый вход. Вот как я это сделаю:
constructor(props) {
super(props);
this.emailRef = React.createRef(); // might not need this
this.state = {
value: ''
}
}
<TextInput
value={this.state.value}
onChangeText={(text) => this.setState({text})}
placeHolder="Email Address"
blurOnSubmit={false}
/>
<Button
text="change value"
onPress={() => {
// just use `this.state.value` to do whatever you need with it
}}
/>
Я повторно рассмотрел эту проблему и нашел решение.
Скопируйте файл перед обработкой во временное расположение. Затем сохраните файл, прежде чем закрыть его в Excel:
File::Copy::copy('c:\some_excel_file.xls', 'c:\temp\SFO3jfd.xls');
my $book = $excel->Workbooks->Open('c:\temp\SFO3jfd.xls',
{ 'UpdateLinks' => $excel_symbols->{'xlUpdateLinksNever'},
'ReadOnly' => 1,
'IgnoreReadOnlyRecommended' => 1
});
$book->Save();
$book->Close();
Почему это работает:
Excel 2003 автоматически пересчитывает формулы в документах, которые были созданы в более старой версии Excel. Кроме того, макросы могут быть вызваны при открытии документа. Все это означает, что в документ могут быть внесены изменения, даже если ваш скрипт не выполняет никаких таких операций.
Сохраняя документ перед закрытием, вы избегаете диалогового окна с просьбой сохранить файл. Использование временного файла гарантирует, что исходный файл не будет изменен во время операции проверки. Если вас это не беспокоит, вы можете рассмотреть возможность проверки на месте.
Вот полная документация для Открытого метода. Интересно, является ли параметр CorruptLoad тем, в чем Вы нуждаетесь.
Вы могли рассмотреть использование электронной таблицы:: ParseExcel (хотя это может испытать недостаток в функциях, Вам нужно), или ПОИ Apache (хотя будет требоваться некоторое обертывание для использования в сценарии Perl) вместо того, чтобы назвать механизм Excel по OLE. Тем путем Вы не получите сгенерированных Excel диалоговых окон.