автоматизируйте обработку файла Excel в жемчуге и избегайте взаимодействий диалогового окна/UI

Я думаю, что вам нужен контролируемый вход. Вот как я это сделаю:

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
  }}
/>

5
задан schwerwolf 20 January 2009 в 15:52
поделиться

3 ответа

Я повторно рассмотрел эту проблему и нашел решение.

Скопируйте файл перед обработкой во временное расположение. Затем сохраните файл, прежде чем закрыть его в 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. Кроме того, макросы могут быть вызваны при открытии документа. Все это означает, что в документ могут быть внесены изменения, даже если ваш скрипт не выполняет никаких таких операций.

Сохраняя документ перед закрытием, вы избегаете диалогового окна с просьбой сохранить файл. Использование временного файла гарантирует, что исходный файл не будет изменен во время операции проверки. Если вас это не беспокоит, вы можете рассмотреть возможность проверки на месте.

2
ответ дан 15 December 2019 в 06:36
поделиться

Вот полная документация для Открытого метода. Интересно, является ли параметр CorruptLoad тем, в чем Вы нуждаетесь.

0
ответ дан 15 December 2019 в 06:36
поделиться

Вы могли рассмотреть использование электронной таблицы:: ParseExcel (хотя это может испытать недостаток в функциях, Вам нужно), или ПОИ Apache (хотя будет требоваться некоторое обертывание для использования в сценарии Perl) вместо того, чтобы назвать механизм Excel по OLE. Тем путем Вы не получите сгенерированных Excel диалоговых окон.

3
ответ дан 15 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

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