Файловая система Expo — изменение существующего листа ExcelIOS

Программируем под IOS
Ответить
Anonymous
 Файловая система Expo — изменение существующего листа Excel

Сообщение 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


)}
/>
(

Email



)}
/>

(

Phone Number



)}
/>



);
}
export default FormScreen; ```

[1]: https://i.sstatic.net/QsyN3LRn.png


Подробнее здесь: https://stackoverflow.com/questions/791 ... xcel-sheet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»