private void SaveFileDialog()
{
//string localFilePath, fileNameExt, newFileName, FilePath;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
//设置文件类型
saveFileDialog1.Filter = " excel files(*.xls)|*.xls";
//设置默认文件类型显示顺序
saveFileDialog1.FilterIndex = 2;
//保存对话框是否记忆上次打开的目录
saveFileDialog1.RestoreDirectory = true;
//点了保存按钮进入
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
DataTable dt = (DataTable)this.dataGridView1.DataSource;
TableToExcel(saveFileDialog1.FileName, dt, "haiyan");
}
}
static public void TableToExcel(string excel, DataTable tb, string tbname)
{
try
{
OleDbConnection connex = GetConnFromExcel(excel); //获取到excel文件的oledb连接
string ct = "CREATE TABLE " + tbname + " ("; //以下生成一个sql命令向excel中插入一个表
foreach (DataColumn clmn in tb.Columns)
{
switch (clmn.DataType.Name) //根据不同数据类型分别处理
{
case "Decimal":
ct += clmn.ColumnName + " Decimal,";
break;
case "Double":
ct += clmn.ColumnName + " Double,";
break;
default:
ct += clmn.ColumnName + " string,";
break;
}
}
ct = ct.Substring(0, ct.Length - 1) + ")";
OleDbCommand cmd1 = new OleDbCommand(ct, connex);
cmd1.ExecuteNonQuery(); //向excel中插入一个表
foreach (DataRow r in tb.Rows) //下面向excel中一行一行写入数据
{
string fs = "", vs = "";
foreach (DataColumn clmn in tb.Columns)
{
fs += clmn.ColumnName + ",";
if (r[clmn.ColumnName] == DBNull.Value)
{
vs += "null,";
continue;
}
switch (clmn.DataType.Name) //根据不同数据类型分别处理
{
case "Decimal":
vs += ((decimal)r[clmn.ColumnName]).ToString("0.00") + ",";
break;
case "Double":
vs += ((double)r[clmn.ColumnName]).ToString("0.00") + ",";
break;
case "DateTime":
vs += "'" + ((DateTime)r[clmn.ColumnName]).ToShortDateString() + "',";
break;
default:
vs += "'" + r[clmn.ColumnName].ToString() + "',";
break;
}
}
string sqlstr = "insert into [" + tbname + "$] (" + fs.Substring(0, fs.Length - 1) + ") values (" + vs.Substring(0, vs.Length - 1) + ")";
OleDbCommand cmd = new OleDbCommand(sqlstr, connex);
cmd.ExecuteNonQuery(); //向excel中插入数据
}
connex.Close();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
static public OleDbConnection GetConnFromExcel(string ExcelFileName)
{
try
{
OleDbConnection connEX = new OleDbConnection();
connEX.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFileName + ";Extended Properties=Excel 8.0";
//connEX.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFileName + ";Extended Properties=""Excel 8.0;IMEX=1;""";
connEX.Open();
return connEX;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}![![图片说明](https://img-ask.csdn.net/upload/201505/21/1432197521_401467.png)图片说明](https://img-ask.csdn.net/upload/201505/21/1432197510_409063.png)
C# dataGridView数据导到Excel里面 标题是英文了,怎么改成中文的?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- threenewbee 2015-05-21 08:42关注
fs += clmn.ColumnName + ",";
->
fs += clmn.Text + ",";
看看解决 无用评论 打赏 举报
悬赏问题
- ¥50 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥200 uniapp长期运行卡死问题解决
- ¥15 latex怎么处理论文引理引用参考文献
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?