В моем приложении для iOS у меня есть раздел «Форма», который принимает вводимые пользователем данные, а затем записывает их в файл Excel.
Это работает хорошо, но проблема в том, что каждый раз, когда пользователь нажимает «Отправить», вместо того, чтобы перезаписывать уже созданный файл Excel в файлах пользователя, он по сути создает новый файл Excel и спрашивает, где его следует сохранить [Подсказка после нажатия кнопки «Отправить]»[1]
Как мне сделать так, чтобы он запрашивал разрешение только один раз, и при каждой отправке после первой не запрашивал, а просто добавлял к уже существующей таблице Excel?
Вот мой код для контекста:
var ws;
var controlVar;
function FormScreen({ route, navigation }) {
const [fontsLoaded, fontError] = useFonts({
AvenirR: require("../assets/fonts/AvenirLT95BlackOblique.ttf"),
});
const { control, handleSubmit } = useForm();
async function onSubmit(data) {
var dataArray = Object.entries(data); //convert object to AOA
if (ws === undefined) {
ws = XLSX.utils.aoa_to_sheet(dataArray, { origin: -1 }); //create a new worksheet and appends data to it. AOA Required for headers
} else {
XLSX.utils.sheet_add_aoa(ws, dataArray, { origin: -1 }); //adds another sheet
}
XLSX.utils.book_append_sheet(wb, ws); //Appends worksheet to workbook
const uri = FileSystem.documentDirectory + "form.xlsx"; //creates link + name
const wbout = XLSX.write(wb, {
//writes the workbook
type: "base64",
bookType: "xlsx",
});
console.log(`Writing to ${JSON.stringify(uri)} `);
//with text: ${wbout}j
await FileSystem.writeAsStringAsync(uri, wbout, {
//Write the entire contents of a file as a string.
encoding: FileSystem.EncodingType.Base64,
}).then(() => {
Sharing.shareAsync(uri);
});
Alert.alert(
"Thank you!",
"Form submitted successfully!",
[
{
text: "Back to Main Menu",
onPress: () => navigation.navigate("Home"),
},
],
{ cancelable: false }
);
}
return (
Stay in touch!
(
Name
)}
/>
(
Company Name
)}
/>
(
Email
)}
/>
(
Phone Number
)}
/>
);
}
export default FormScreen; ```
[1]: https://i.sstatic.net/QsyN3LRn.png
Подробнее здесь: https://stackoverflow.com/questions/791 ... xcel-sheet
Файловая система Expo — изменение существующего листа Excel ⇐ IOS
Программируем под IOS
-
Anonymous
1730238786
Anonymous
В моем приложении для iOS у меня есть раздел «Форма», который принимает вводимые пользователем данные, а затем записывает их в файл Excel.
Это работает хорошо, но проблема в том, что каждый раз, когда пользователь нажимает «Отправить», вместо того, чтобы перезаписывать уже созданный файл Excel в файлах пользователя, он по сути создает новый файл Excel и спрашивает, где его следует сохранить [Подсказка после нажатия кнопки «Отправить]»[1]
Как мне сделать так, чтобы он запрашивал разрешение только один раз, и при каждой отправке после первой не запрашивал, а просто добавлял к уже существующей таблице Excel?
Вот мой код для контекста:
var ws;
var controlVar;
function FormScreen({ route, navigation }) {
const [fontsLoaded, fontError] = useFonts({
AvenirR: require("../assets/fonts/AvenirLT95BlackOblique.ttf"),
});
const { control, handleSubmit } = useForm();
async function onSubmit(data) {
var dataArray = Object.entries(data); //convert object to AOA
if (ws === undefined) {
ws = XLSX.utils.aoa_to_sheet(dataArray, { origin: -1 }); //create a new worksheet and appends data to it. AOA Required for headers
} else {
XLSX.utils.sheet_add_aoa(ws, dataArray, { origin: -1 }); //adds another sheet
}
XLSX.utils.book_append_sheet(wb, ws); //Appends worksheet to workbook
const uri = FileSystem.documentDirectory + "form.xlsx"; //creates link + name
const wbout = XLSX.write(wb, {
//writes the workbook
type: "base64",
bookType: "xlsx",
});
console.log(`Writing to ${JSON.stringify(uri)} `);
//with text: ${wbout}j
await FileSystem.writeAsStringAsync(uri, wbout, {
//Write the entire contents of a file as a string.
encoding: FileSystem.EncodingType.Base64,
}).then(() => {
Sharing.shareAsync(uri);
});
Alert.alert(
"Thank you!",
"Form submitted successfully!",
[
{
text: "Back to Main Menu",
onPress: () => navigation.navigate("Home"),
},
],
{ cancelable: false }
);
}
return (
Stay in touch!
(
Name
)}
/>
(
Company Name
)}
/>
(
)}
/>
(
Phone Number
)}
/>
);
}
export default FormScreen; ```
[1]: https://i.sstatic.net/QsyN3LRn.png
Подробнее здесь: [url]https://stackoverflow.com/questions/79139076/expo-file-system-changing-existing-excel-sheet[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия