Problème d’exportation de données vers un fichier CSV dans le noyau .NET

la programmation


fichier csv donnant une erreur de format avec ce code

Ce que j’ai essayé :

C#
<pre>private byte[] BuildCollectionReport(string fromDate, string toDate) {
			var FileData = new byte[] { };
			using (System.IO.MemoryStream stream = new MemoryStream()) {
				using (ExcelPackage p = new ExcelPackage(stream)) {
					var s = p.Workbook.Worksheets.Add("IN Collection Report");
					try {
						string[] columnHeaders = new string[]{
							"TypeName"
							,"CategoryName"
							,"TSSubject"
							,"TSStatus"
							,"TSContactId"
							,"TSAgreementId"
							,"Agreement Number"
							,"TSDate"
							,"TSAmount"
						};
						foreach (var c in columnHeaders) {
							SetValue(ref s, 1, Array.IndexOf(columnHeaders, c) + 1, c);
						}
						int rowIndex = 2;
						var sp = (StoredProcedure)new StoredProcedure(UserConnection, "CollectionReport")
							.WithParameter("FromDate", fromDate)
							.WithParameter("ToDate", toDate);
						try {
							using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
							{
								using (var reader = dbExecutor.ExecuteReader(sp.GetSqlText(), sp.Parameters)) {
									while(reader.Read()) {
										for (int n = 0; n < reader.FieldCount; n++)
										{
											SetValue(ref s, rowIndex, n+1, reader.GetValue(n).ToString());
										}
										rowIndex++;
									}
								}
							}
						} catch {}
					} catch {}
					FileData = p.GetAsByteArray();
				}
			}
			return FileData;
		}
		
		private void SetValue(ref ExcelWorksheet Sheet, int Row, int Cell, string Value) {
			if (!string.IsNullOrWhiteSpace(Value)) {
				Sheet.Cells[Row, Cell].Value = Value;
			}
		}
public Stream DownloadCollectionReport(string fromDate, string toDate)
		{
			var excelData = BuildCollectionReport(fromDate, toDate);
			var reportStream = new MemoryStream(excelData);
			WebOperationContext.Current.OutgoingResponse.ContentType = "application/octet-stream";
			WebOperationContext.Current.OutgoingResponse.ContentLength = reportStream.Length;
			WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition",
				"attachment; filename=CollectionReport.csv");
			return reportStream;
		}

Solution 1

Commencez par examiner les données CSV réelles que vous générez. Nous ne pouvons pas le faire car nous n’avons pas votre contribution sur laquelle travailler. Enregistrez donc les données CSV dans un fichier, ouvrez-le dans un éditeur et examinez-le bien vous-même.
CSV n’est pas un format compliqué, il peut donc être aussi simple que des guillemets doubles manquants ou que vos données contiennent des caractères qui gâchent la sortie.
Mais sans examiner les données CSV réelles qui posent problème, il n’y a aucun moyen de savoir par où commencer la recherche.

Solution 2

Lorsque vous répondez à une question, veuillez :
Lisez attentivement la question.
Comprenez que l’anglais n’est pas la langue maternelle de tout le monde, alors soyez indulgent envers les mauvaises orthographes et la grammaire.
Si une question est mal formulée, demandez des éclaircissements, ignorez-la ou modifiez la question et résolvez le problème. Les insultes ne sont pas les bienvenues.
Ne dites à personne de lire le manuel. Il y a de fortes chances qu’ils l’aient fait et ne comprennent pas. Fournissez une réponse ou passez à la question suivante.
Travaillons à aider les développeurs, pas à les faire se sentir stupides.

コメント

タイトルとURLをコピーしました