PDA

View Full Version : سوال: مشکل در علامت سوال به جای کاراکترهای فارسی در خروجی Excel؟



پیام حیاتی
جمعه 15 اسفند 1393, 12:35 عصر
سلام
جستجو کردم اما تمامیه موارد گفته شده رو در برنامه رعایت کردم ، کدهای insert اطلاعات از حرف N استفاده کردم،زبان sql هم بر روی persian_100 هست فیلدها هم nvarchar هستند.
سوال (http://barnamenevis.org/showthread.php?416882-%D9%85%D8%B4%DA%A9%D9%84-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D8%AF%D8%B1-%D8%A7%DA%A9%D8%B3%D9%84&highlight=%D8%B9%D9%84%D8%A7%D9%85%D8%AA+%D8%B3%D9 %88%D8%A7%D9%84) مشابه پیدا کردم در انجمن که بی پاسخ هست.
این تابع رو برای گرفتن خروجی از datagrid هست :

private void ToCsV(DataGridView dGV, string filename)
{
string stOutput = "";
// Export titles:
string sHeaders = "";


for (int j = 0; j < dGV.Columns.Count; j++)
sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";
stOutput += sHeaders + "\r\n";
// Export data.
for (int i = 0; i < dGV.RowCount - 1; i++)
{
string stLine = "";
for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";
stOutput += stLine + "\r\n";
}
Encoding utf16 = Encoding.GetEncoding(1254);
byte[] output = utf16.GetBytes(stOutput);
FileStream fs = new FileStream(filename, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(output, 0, output.Length); //write the encoded file
bw.Flush();
bw.Close();
fs.Close();
}

این هم کد دکمه گرفتن خروجی :

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel Documents (*.xls)|*.xls";
sfd.FileName = "export.xls";
if (sfd.ShowDialog() == DialogResult.OK)
{
//ToCsV(dataGridView2, @"c:\export.xls");
ToCsV(dataGridView2, sfd.FileName); // Here dataGridview2 is your grid view name
}

خروجی :
129179

amirzandi
جمعه 15 اسفند 1393, 15:27 عصر
سلام
به جای اینکه اطلاعات را در Datagridview بریزید در یک Datatable ذخیره کنید و DataTable را به متد ارسال کنید. به نظرم باید درست شود.

محمد آشتیانی
جمعه 15 اسفند 1393, 16:17 عصر
سلام
اینجا قبلا پاسخ دادم http://barnamenevis.org/showthread.php?475529-%D9%BE%DB%8C%D8%BA%D8%A7%D9%85-different-format-%D9%BE%D8%B3-%D8%A7%D8%B2-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D8%AF%DB%8C%D8%AA%D8%A7-%DA%AF%D8%B1%DB%8C%D8%AF-%D8%A8%D9%87-%D8%A7%DA%A9%D8%B3%D9%84&highlight=csv

در واقع برای خروجی فارسی ، کد پیج رو باید 1256 انتخاب کنی.


موفق باشید

SabaSabouhi
جمعه 15 اسفند 1393, 18:35 عصر
سلام
این مشکل فقط تو Excel دیده نمی‌شه. برخی از برنامه‌ها Unicode هستن و برخی دیگه نیستن. تو ویندوز یه تنظیمی وجود داره
که مشخص می‌کنه برای برنامه‌هایی که از Unicode پشتیبانی نمی‌کنن، از چه code page ای استفاده کنه. این تنظیم رو می‌تونی
تو Control Panel~Region ( برای ویندوز 8.1 ) یا Control Panel~Regional and language options ( تو ویندوزهای قدیمی‌تر ) پیدا کنی.
البته تحت عنوان Language for non-Unicode programs

صبا صبوحی