В моем приложении для 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