יצוא לקובץ CSV בעברית
-
אני מייצא לקובץ CSV
והבעיה שכאשר המילים בעברית כל הכיתוב משתבש לי
ניסיתי לכתוב כךTextWriter tw = File.CreateText(Directory.GetCurrentDirectory().ToString() + @"\tests.csv"); tw.Write("שם משפחה,"); tw.Write("שם פרטי", Encoding.GetEncoding(1255));
אך גם לא הלך לי
תודה
פורסם במקור בפורום CODE613 ב10/10/2013 13:18 (+03:00)
-
הפונקציה שהבאת יוצרת קובץ ומחזירה אובייקט StreamWriter בקידוד לUTF8,
כך ששאני באמת מאוד מתפלא למה זה לא עובד.
(האנקודינג שכתבת לא אמור לעזור, אין זה מקומו וגם אין לו מקום אחרי יצירת הסטרים).הקוד דלהלן עובד:
var fileName = "tests.csv"; using (StreamWriter sw = new StreamWriter(File.Open(fileName, FileMode.Create), Encoding.UTF8)) { sw.Write("אבג ABC 123"); }
אני בכלל עובד אחרת: אני קודם יוצר סטרינג ארוך ואח"כ מכניס לתוך הקובץ בבת אחת ככה:
var strBldr = new StringBuilder(); strBldr.Append("אבג ABC 123"); File.WriteAllText(fileName, strBldr.ToString(), Encoding.GetEncoding(1255));
שים לב שכיון שבשם קובץ אפשר לכותב נתיב יחסי, אז אתה לא להשיג את כתובת הנתיב המוחלט.
לכן אפשר לכתוב בתור שם קובץ "file.csv" והוא יווצר בתייקה בה התוכנה נמצאת.
או "dir\file.csv" ואז הוא יווצר בתייקה dir שבתוך התיקייה ממנה התוכנה רצה.פורסם במקור בפורום CODE613 ב10/10/2013 14:09 (+03:00)
-
[quote="דוד ל.ט."]הקוד דלהלן עובד:
var fileName = "tests.csv"; using (StreamWriter sw = new StreamWriter(File.Open(fileName, FileMode.Create), Encoding.UTF8)) { sw.Write("אבג ABC 123"); }
סליחה על הבורות מה ביאור הקוד הזה using וכו' לא מוכר לי כזה תחביר
זה עובד
אבל אם כבר מעניין אותי התחבירפורסם במקור בפורום CODE613 ב10/10/2013 15:37 (+03:00)
-
Using משמש בעיקר לוודא שבתום השימוש תיקרא הפונקצייה Dispose.
וזאת גם אם תוכנ עפה באמצע השימוש (מאחורי הקלעים הקומפיילר בונה tyr מסביב).
הפונקציה Dispose דואגת לשחרור השימוש/זיכרון מהאובייקט.
משתמשים בUsing בכל דבר "יקר": קבצים וכדו'.בפועל using גם משמשת כבלוק, הצהרת הכותרת שלה והצהרות בתוכה,
מאבדים את טווח ההכרה מחוצה לה.פורסם במקור בפורום CODE613 ב10/10/2013 18:38 (+03:00)