Passer des données client au serveur pour créer un fichier Excel ou CSV

Je pense que ce que j’ai peut être en réalité un problème de conception plutôt que technique, mais j’ai l’impression que j’ai eu l’impression de me heurter à la fois à ma capacité et à ma compréhension de surmonter ce problème.

Je crée une page Web de rapport dans le cadre d’une application Web VB.NET standard. La page est gérée par les données, jquery appelant un service Web local vers l’application pour obtenir les valeurs des éléments créés de manière dynamic dans le DOM. En fin de compte, ces éléments dynamics et leurs valeurs sont tous regroupés dans un object JSON, de sorte qu’une partie du côté client convient parfaitement.

À l’heure actuelle, je peux transmettre cet object JSON à une méthode du service Web qui crée un adaptateur SQL Data à partir des valeurs et interroge une firebase database. Mon objective ultime est d’utiliser ces données JSON clientes pour interroger la firebase database et créer un fichier Excel à renvoyer à l’utilisateur ou, à défaut, un fichier CSV.

Si j’ai bien compris (en travaillant avec la génération de fichiers PDF), ce type de fonction ne peut être effectué que du côté serveur de l’application Web, pas même du service Web (c’est-à-dire que le service Web ne peut pas renvoyer un tableau d’octets). et javascript / jQuery présenter cela comme un fichier).

Alors, comment puis-je m’y prendre? Maintenant, j’ai mon object JSON du côté client, où dois-je l’envoyer, comment et comment puis-je retourner mon fichier?

J’ai lu soit sur le stockage du JSON dans un champ caché et sur le fait que le serveur prenne la valeur des éléments et ensuite sur AJAX pour envoyer le JSON au serveur juste avant qu’une publication ne soit activée pour déclencher la fonction côté serveur. pour exécuter la requête et renvoyer les données.

J’ai juste besoin d’un peu d’aide, et d’un peu d’aide pour comprendre où utiliser le champ caché ou ce que je suis en train de faire avec l’appel AJAX pré-postback.

Merci.

J’ai fait des choses semblables à celles du passé en utilisant une page de gestionnaire générique (ASHX). Si vous définissez le type de contenu de la réponse HttpContext.Response.ContentType sur text/csv et que vous appelez

window.location = “handler.ashx”;

Il générera le fichier csv côté serveur et se téléchargera dans le navigateur de l’utilisateur. Vous pouvez essayer de passer le JSON en tant que QuerySsortingng et de l’parsingr dans la page du gestionnaire pour faire ce que vous voulez du côté serveur afin de générer le fichier CSV.

Exemple de code:

 Public Sub ProcessRequest(context As HttpContext) context.Response.ContentType = "text/csv" context.Response.AddHeader("Content-Disposition", "attachment;filename=test.csv") Dim json As Ssortingng = context.Request.QuerySsortingng("json") Using sw As New StreamWriter(context.Response.OutputStream) sw.WriteLine("Test!") sw.Flush() End Using End Sub 

Je ne sais pas si la définition d’un champ masqué côté client aiderait, car sa lecture côté serveur ne refléterait probablement pas la valeur que vous avez définie car ViewState ne reconnaît pas les modifications. Il y a peut-être des moyens de contourner cela cependant.

EDIT: Désolé de lire la partie que vous avez dite le code était VB.Net. Changé le code c # en VB.net