PDA

View Full Version : مشکل در ترانسفر شدن اطلاعات فارسی



mostafa_aa
دوشنبه 06 آبان 1392, 23:22 عصر
سلام

دوستان من برنامه ای نوشتم که طلاعات دیتاگریدم رو داخل یک فیل اکسل میریزه
تنها مشکلی که وجود داره که رشته های فارسی رو درست انتقال نمیده و یک سری کاراکتر در هم برهم ذخیره میکنه
ممنون میشم راهنمایی کنید

اینم کدی هست که نوشتم ( در C#)


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("utf-32");
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();
}

private void button1_Click(object sender, EventArgs e)
{

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

rahnema1
سه شنبه 07 آبان 1392, 06:03 صبح
به جای این:


Encoding utf16 = Encoding.GetEncoding("utf-32");


این رو بذارین:


Encoding utf16 = Encoding.GetEncoding("utf-16");


به جای این هم:



sfd.Filter = "Excel Documents (*.xls)|*.xls";
sfd.FileName = "export.xls";


این رو بذارید:


sfd.Filter = "Excel Documents (*.csv)|*.csv";
sfd.FileName = "export.csv";

mostafa_aa
سه شنبه 07 آبان 1392, 11:04 صبح
با این تغییرات هم درست نشد :ناراحت:

saied_max
سه شنبه 07 آبان 1392, 11:58 صبح
فونت در اکسل را تغییر بده تا درست نمایش بده و یکی از فونت های فارسی رایج را انتخاب کن

mostafa_aa
سه شنبه 07 آبان 1392, 14:13 عصر
فونت در اکسل را تغییر بده تا درست نمایش بده و یکی از فونت های فارسی رایج را انتخاب کن
متاسفانه با تغییر فونت هم درست نشد

شکل دیگه ای هست که من اطلاعات دیتاگرید رو به فایل اکسل انتقال بدم که مشکل فارسیش حل بشه ؟

elahe1364
سه شنبه 07 آبان 1392, 15:36 عصر
شکل دیگه ای هست که من اطلاعات دیتاگرید رو به فایل اکسل انتقال بدم که مشکل فارسیش حل بشه ؟

من به این روش اطلاعات گرید رو به اکسل میفرستم و مشکلی نداره

dgvTemp = (DataGridView)ctrl;
Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
ExcelApp.Application.Workbooks.Add(Type.Missing);
ExcelApp.Visible = true;
ExcelApp.Columns.ColumnWidth = 20;
int k = 1;
for (int i = 0; i < dgvTemp.Rows.Count; i++)
{
k = 1;
for (int j = 0; j < dgvTemp.Columns.Count; j++)
{
if (dgvTemp.Columns[j].Visible && dgvTemp.Rows[i].Cells[j].Value != null)
{
ExcelApp.Cells[1, k] = dgvTemp.Columns[j].HeaderText;
ExcelApp.Cells[i + 2, k] = dgvTemp.Rows[i].Cells[j].Value.ToString();
k++;
}
}
}

mostafa_aa
چهارشنبه 08 آبان 1392, 09:52 صبح
ممنونم الهه خانوم ، با همین روش مشکل حل شد
سپاس