C# dataGridView数据导出Excel 单元格格式设置------求哥哥姐姐们教教我 datagridviewexcel乱码C# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要设置单元格的格式才行。Sheet.Cells[i, j].NumberFormat = xxx 可以让客户自己处理吗?处理办法:在excel双击,数据就能正常显示了。前提是你要正确设置单元格格式 把DataGridView数据导出到Excel//加载绑定DataGridView到数据集private void Frm_Main_Load(object sender, EventArgs e) { dgv_Message.DataSource = new List<Fruit>() {//绑定数据集合 new Fruit(){Name="西瓜",Price=30}, new Fruit(){Name="菠萝",Price=40}, new Fruit(){Name="香蕉",Price=33}, new Fruit(){Name="葡萄",Price=31}}; dgv_Message.Columns[0].Width = 200;//设置列宽度 dgv_Message.Columns[1].Width = 170;//设置列宽度 }//把控件中的数据导出到Excel文档 private Excel.Application G_ea;//定义Word应用程序字段 private object G_missing = //定义G_missing字段并添加引用 System.Reflection.Missing.Value; private void btn_OutPut_Click(object sender, EventArgs e) { List<Fruit> P_Fruit = new List<Fruit>();//创建数据集合 foreach (DataGridViewRow dgvr in dgv_Message.Rows) { P_Fruit.Add(new Fruit()//向数据集合添加数据 { Name = dgvr.Cells[0].Value.ToString(), Price = Convert.ToSingle(dgvr.Cells[1].Value.ToString()) }); } SaveFileDialog P_SaveFileDialog =//创建保存文件对话框对象 new SaveFileDialog(); P_SaveFileDialog.Filter = "*.xls|*.xls"; if (DialogResult.OK ==//确认是否保存文件 P_SaveFileDialog.ShowDialog()) { ThreadPool.QueueUserWorkItem(//开始线程池 (pp) =>//使用lambda表达式 { G_ea = new Microsoft.Office.Interop.Excel.Application();//创建应用程序对象 Excel.Workbook P_wk = G_ea.Workbooks.Add(G_missing);//创建Excel文档 Excel.Worksheet P_ws = (Excel.Worksheet)P_wk.Worksheets.Add(//创建工作区域 G_missing, G_missing, G_missing, G_missing); for (int i = 0; i < P_Fruit.Count; i++) { P_ws.Cells[i + 1, 1] = P_Fruit[i].Name;//向Excel文档中写入内容 P_ws.Cells[i + 1, 2] = P_Fruit[i].//向Excel文档中写入内容 Price.ToString(); }//CodeGo.net/ P_wk.SaveAs(//保存Word文件 P_SaveFileDialog.FileName, G_missing, G_missing, G_missing, G_missing, G_missing, Excel.XlSaveAsAccessMode.xlShared, G_missing, G_missing, G_missing, G_missing, G_missing); ((Excel._Application)G_ea.Application).Quit();//退出应用程序 this.Invoke(//调用窗体线程 (MethodInvoker)(() =>//使用lambda表达式 { MessageBox.Show(//弹出消息对话框 "成功创建Excel文档!", "提示!"); })); }); } } range.NumberFormatLocal = "@" 我就是设置格式后 数字式显示正常了,但文字乱码了 格式设置在91行Microsoft.Office.Interop.Excel.Range range1 = xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[grid.Rows.Count + 1, grid.Columns.Count ]);// xlApp.Cells[grid.Rows.Count - 1, grid.Columns.Count - 1] range1.NumberFormatLocal = "@";这样写不知道哪里出错了 为什么文本格式汉字乱码了呢? 这样的话界面就不友好了 问题你在Excel里面的单元格的大小默认的,当你长度超出也会这样子。难以避免! 怎样设置单元格自适应或者换行属性啊?我这里双击列宽依旧还是XXXXX,但最上面的编辑栏里能看到数据,不知道为什么? 你尝试一下设置一下Excel的单元格格式,在输出的时候,比如说:你的单元格的数字 被 科学记数法表示,你可以把该列的单元格设置为数值型的数字。之后出来的Excel数据应该就可以不用改了。这是我突然想到的 http://msdn.microsoft.com/zh-cn/library/26etazsy(v=vs.110).aspx 大神 求解 谢谢! Tostring()问题 如何实现定时提醒 帮忙看一下这个程序,关于directsound的! 还是从一个程序控制另一个程序的问题 showModalDialog的小问题 关于appSettings节的设置问题! system.io.fileinfo.copyTO(),在vista上遇到问题! C# 中如何实现不定长的数组? C# 安装部署 好久没来!看了看论坛!高手很多!大家请多指教!我的QQ4120938!呵呵 c# 如何实现float 取整数 C# 调用 Session时出现了一下错误,只有一个页面会这样子
处理办法:在excel双击,数据就能正常显示了。前提是你要正确设置单元格格式
//加载绑定DataGridView到数据集
private void Frm_Main_Load(object sender, EventArgs e)
{
dgv_Message.DataSource = new List<Fruit>() {//绑定数据集合
new Fruit(){Name="西瓜",Price=30},
new Fruit(){Name="菠萝",Price=40},
new Fruit(){Name="香蕉",Price=33},
new Fruit(){Name="葡萄",Price=31}};
dgv_Message.Columns[0].Width = 200;//设置列宽度
dgv_Message.Columns[1].Width = 170;//设置列宽度
}
//把控件中的数据导出到Excel文档
private Excel.Application G_ea;//定义Word应用程序字段
private object G_missing = //定义G_missing字段并添加引用
System.Reflection.Missing.Value; private void btn_OutPut_Click(object sender, EventArgs e)
{
List<Fruit> P_Fruit = new List<Fruit>();//创建数据集合
foreach (DataGridViewRow dgvr in dgv_Message.Rows)
{
P_Fruit.Add(new Fruit()//向数据集合添加数据
{
Name = dgvr.Cells[0].Value.ToString(),
Price = Convert.ToSingle(dgvr.Cells[1].Value.ToString())
});
}
SaveFileDialog P_SaveFileDialog =//创建保存文件对话框对象
new SaveFileDialog();
P_SaveFileDialog.Filter = "*.xls|*.xls";
if (DialogResult.OK ==//确认是否保存文件
P_SaveFileDialog.ShowDialog())
{
ThreadPool.QueueUserWorkItem(//开始线程池
(pp) =>//使用lambda表达式
{
G_ea = new Microsoft.Office.Interop.Excel.Application();//创建应用程序对象
Excel.Workbook P_wk = G_ea.Workbooks.Add(G_missing);//创建Excel文档
Excel.Worksheet P_ws = (Excel.Worksheet)P_wk.Worksheets.Add(//创建工作区域
G_missing, G_missing, G_missing, G_missing);
for (int i = 0; i < P_Fruit.Count; i++)
{
P_ws.Cells[i + 1, 1] = P_Fruit[i].Name;//向Excel文档中写入内容
P_ws.Cells[i + 1, 2] = P_Fruit[i].//向Excel文档中写入内容
Price.ToString();
}//CodeGo.net/
P_wk.SaveAs(//保存Word文件
P_SaveFileDialog.FileName, G_missing, G_missing, G_missing,
G_missing, G_missing, Excel.XlSaveAsAccessMode.xlShared, G_missing,
G_missing, G_missing, G_missing, G_missing);
((Excel._Application)G_ea.Application).Quit();//退出应用程序
this.Invoke(//调用窗体线程
(MethodInvoker)(() =>//使用lambda表达式
{
MessageBox.Show(//弹出消息对话框
"成功创建Excel文档!", "提示!");
}));
});
}
}
range.NumberFormatLocal = "@"
我就是设置格式后 数字式显示正常了,但文字乱码了 格式设置在91行Microsoft.Office.Interop.Excel.Range range1 = xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[grid.Rows.Count + 1, grid.Columns.Count ]);// xlApp.Cells[grid.Rows.Count - 1, grid.Columns.Count - 1]
range1.NumberFormatLocal = "@";
这样写不知道哪里出错了 为什么文本格式汉字乱码了呢?
问题你在Excel里面的单元格的大小默认的,当你长度超出也会这样子。难以避免!
怎样设置单元格自适应或者换行属性啊?
我这里双击列宽依旧还是XXXXX,但最上面的编辑栏里能看到数据,不知道为什么?
你的单元格的数字 被 科学记数法表示,你可以把该列的单元格设置为数值型的数字。之后出来的Excel数据应该就可以不用改了。
这是我突然想到的