大家好!
我用下面一段程序实现了将textBox中的内容保存到Excel中, if (saveexcel.ShowDialog() == DialogResult.OK)
{ OleDbConnection conn = new OleDbConnection(); //连接时,D:\Test.xls (被连接的文件)不存在也没有关系,在创建表的时候会自动创建该文件
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
saveexcel.FileName + ";Extended Properties='Excel 8.0;'";
conn.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn; //创建表 Sheet1 ,有字段 name,city,country,address
cmd.CommandText = "Create Table [Sheet1] (发动机基本指标 varchar(50),参数值 float);";
cmd.ExecuteNonQuery(); //在表 Sheet1 中插入一条记录
cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机额定功率效率(%)','" +
textBox2.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机常用工况效率(%)','" +
textBox3.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机当量功率(kw)','" +
textBox4.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机额定功率密度(w/kg)','" +
textBox5.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('电堆峰值功率密度(w/kg)','" +
textBox6.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('氢气利用率(%)','" +
textBox7.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机噪声(db)','" +
textBox8.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('额定功率热起动时间(s)','" +
textBox9.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('怠速冷起动时间(s)','" +
textBox10.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('怠速热起动时间(s)','" +
textBox11.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('10%PE到90%PE热态响应时间(s)','" +
textBox12.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('0%PE到50%PE热态响应时间(s)','" +
textBox13.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机绝缘性(MΩ)','" +
textBox14.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机气密性(KPa)','" +
textBox15.Text.ToString() + "');";
cmd.ExecuteNonQuery(); conn.Close();
}
可是问题是,保存的2列均为默认宽度,而我第一列的字段名很长,需要将第一列的宽度调长点,请问该插入怎样一段程序才能达到目的呢?或者能否用这么一个方法,我这里已经有了规定格式的Excel模板,
发动机性能指标 参数
指标1
指标2
指标3如何copy这个模板,并在参数下面填写对应值,然后另存呢?
我用下面一段程序实现了将textBox中的内容保存到Excel中, if (saveexcel.ShowDialog() == DialogResult.OK)
{ OleDbConnection conn = new OleDbConnection(); //连接时,D:\Test.xls (被连接的文件)不存在也没有关系,在创建表的时候会自动创建该文件
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
saveexcel.FileName + ";Extended Properties='Excel 8.0;'";
conn.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn; //创建表 Sheet1 ,有字段 name,city,country,address
cmd.CommandText = "Create Table [Sheet1] (发动机基本指标 varchar(50),参数值 float);";
cmd.ExecuteNonQuery(); //在表 Sheet1 中插入一条记录
cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机额定功率效率(%)','" +
textBox2.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机常用工况效率(%)','" +
textBox3.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机当量功率(kw)','" +
textBox4.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机额定功率密度(w/kg)','" +
textBox5.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('电堆峰值功率密度(w/kg)','" +
textBox6.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('氢气利用率(%)','" +
textBox7.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机噪声(db)','" +
textBox8.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('额定功率热起动时间(s)','" +
textBox9.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('怠速冷起动时间(s)','" +
textBox10.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('怠速热起动时间(s)','" +
textBox11.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('10%PE到90%PE热态响应时间(s)','" +
textBox12.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('0%PE到50%PE热态响应时间(s)','" +
textBox13.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机绝缘性(MΩ)','" +
textBox14.Text.ToString() + "');";
cmd.ExecuteNonQuery(); cmd.CommandText = "insert into [Sheet1] (发动机基本指标,参数值) VALUES ('发动机气密性(KPa)','" +
textBox15.Text.ToString() + "');";
cmd.ExecuteNonQuery(); conn.Close();
}
可是问题是,保存的2列均为默认宽度,而我第一列的字段名很长,需要将第一列的宽度调长点,请问该插入怎样一段程序才能达到目的呢?或者能否用这么一个方法,我这里已经有了规定格式的Excel模板,
发动机性能指标 参数
指标1
指标2
指标3如何copy这个模板,并在参数下面填写对应值,然后另存呢?
这样楼主要么引用excel然后进行Com编程
要么用这个类库吧
能否用这么一个方法,我这里已经有了规定格式的Excel模板,
发动机性能指标 参数
指标1
指标2
指标3能否copy这个模板,并在参数下面填写对应值,然后另存呢?
这样麻烦吗?
{ public static void PrepareGridViewForExport(Control gv)
{ LinkButton lb = new LinkButton(); Literal l = new Literal(); string name = String.Empty; for (int i = 0; i < gv.Controls.Count; i++)
{ if (gv.Controls[i].GetType() == typeof(LinkButton))
{ l.Text = (gv.Controls[i] as LinkButton).Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(DropDownList))
{ l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } else if (gv.Controls[i].GetType() == typeof(CheckBox))
{ l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False"; gv.Controls.Remove(gv.Controls[i]); gv.Controls.AddAt(i, l); } if (gv.Controls[i].HasControls())
{ PrepareGridViewForExport(gv.Controls[i]); } }
} public static void ExportGridView(GridView GridView1, string filename)
{ string attachment = "attachment; filename=" + filename + ".xls"; HttpResponse Response = HttpContext.Current.Response; Response.ClearContent();
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AddHeader("content-disposition", attachment); Response.ContentType = "application/ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); HtmlForm frm = new HtmlForm(); GridView1.Parent.Controls.Add(frm); frm.Attributes["runat"] = "server"; frm.Controls.Add(GridView1);
frm.RenderControl(htw); Response.Write(sw.ToString()); Response.End();
}
} protected void Button1_Click(object sender, EventArgs e)
{
BindAllTeaInfo();
this.GridView1.AllowPaging = false;
this.GridView1.DataBind();
ExportExcel.PrepareGridViewForExport(GridView1);
ExportExcel.ExportGridView(GridView1, "周奖"); }
这个是把gridview中的数据导入到excel中,希望对你有帮助