C#写一个从数据导出到Excel的表格
C#写一个从数据导出到Excel的表格表名是Product
字段是u_Code(varchar(60)),u_Name(varchar(60)),Photo(图片数据类型image)
不要网页形式的我要C#窗口的那种
容器是用的dataGridView1
要详细的代码,和步骤
网上拷贝的就不要了 --------------------编程问答--------------------
private void Export(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
this.GridView1.RenderControl(hw);
Response.Write(sw.ToString());
Response.End();
}
asp.net的 winfrom 没试过 --------------------编程问答-------------------- 挺好的。 --------------------编程问答-------------------- /// <summary>
/// 导出页面成Excel
/// </summary>
/// <param name="ctl"></param>
/// <param name="Charset"></param>
public void DGToExcel(System.Web.UI.Control ctl, string Charset)
{
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset = Charset == "" ? "UTF-8" : Charset;
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
} --------------------编程问答-------------------- 学习 试验 试验 --------------------编程问答--------------------
--------------------编程问答-------------------- 还有另一种方法利用=Microsoft.Jet.OLEDB.4.0打开Excel文件,对该文件执行insert into 语句。
/// <summary>
/// 导出到Excel文档(说明一下这种导出Excel可以正常打开和编辑,但是其格式是文本格式)
/// </summary>
/// <param name="dtTable">导出的DataTable</param>
/// <param name="strExcelFilePath">Excel文件名</param>
/// <param name="bOverWrite">Excel文件名</param>
public static void ExportToExcelText(DataTable dtTable,string strExcelFilePath,bool bOverWrite)
{
try
{
FileInfo fi = new FileInfo(strExcelFilePath);
if(fi.Exists && !bOverWrite)
{
throw new Exception("同名文件已存在,无法重写!");
}
int i = 0;
int k = 0;
string strTemp = null;
StreamWriter sw = new StreamWriter(strExcelFilePath);
foreach(DataColumn dc in dtTable.Columns)
{
strTemp += dc.ColumnName + "\t";
}
sw.WriteLine(strTemp);
for(i = 0; i < dtTable.Rows.Count; i++)
{
strTemp = "";
for(k = 0; k < dtTable.Columns.Count; k++)
{
strTemp += string.Format("{0}\t",dtTable.Rows[i][k]);
}
sw.WriteLine(strTemp);
}
sw.Flush();
sw.Close();
}
catch(Exception me)
{
throw new Exception("写入Excel文档失败!" + me.Message);
}
}
网上有第三方类库,可以在不安装Excel的情况下导出Excel文件,很好很强大,我用过。。。 --------------------编程问答--------------------
//绑定数据--------------------编程问答-------------------- 代码应该是自己写的,但是我把代码弄进去了,好像有报错Sqlconnection,SqlDateAdapter,Stream,StreamWriter这几个都是未能找到类型或命名空间是要引入命名空间吗?还有我要取的是三个字段其中一个有图片,都要导出到Excel还有导入,需要导入什么引用吗?可以加好友详细告诉我吗? --------------------编程问答--------------------
private void BindData(string sql)
{
SqlConnection conn = new SqlConnection("uid=sa;pwd=123456;server=(local);database=myoffice;max pool size=10000;");
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds=new DataSet();
da.Fill(ds,"pers");
dataGridView1.DataSource = ds.Tables["pers"];
ds.Dispose();
conn.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
BindData("select *from pers");
}
//导出数据到Excel
private void button3_Click(object sender, EventArgs e)
{
SaveAs();
}
private void SaveAs() //另存新档按钮 导出成Excel
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "Export Excel File To";
saveFileDialog.ShowDialog();
Stream myStream;
myStream = saveFileDialog.OpenFile();
//StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string str = "";
try
{
//写标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridView1.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridView1.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
using System.IO; // Stream等
using System.Data.SqlClient; // SqlConnection等
--------------------编程问答--------------------
支持,找一些成熟的类库,会节省很多事情. --------------------编程问答-------------------- 这东西很常用,我也经常在找这方面的代码,还是CSDN好。
Mark! --------------------编程问答-------------------- 你们能给我找个第三方的类库吗?
我对这方面不是很了解,链接地址也可以,最近等的很急,还有我的数据库账号是sa密码是没有的,数据库名UFdemo,服务器是 lanxinGG怎么写数据库的连接,
注意是在C#里不要ASP.NET的代码,是winfrom
我能雕饰成功并且能生成成功导出文件呢和导入文件的话,就给分甚至加分 --------------------编程问答-------------------- 我写的将一个DataTable转成excel
http://download.csdn.net/source/2997557
但你在dataGridView1上的改动要反映到DataTable里面去
NPOI
http://www.cnblogs.com/tonyqus/category/182110.html --------------------编程问答-------------------- 如果你用farpoint.fpspread控件的话,
只要一行就搞定 --------------------编程问答-------------------- +1 --------------------编程问答-------------------- 看到你的数据中有个图片类型的格式。
这个东西,就只能使用excel处理了。
在C#中加载Office的dotnet类库。
在网上找一段代码写入没有问题吧。
带图片的excel导入和导出,让人无语.... --------------------编程问答-------------------- 我用的dataGridView展示数据,需要单击一个按钮导出到Excel,然候点导入按钮把数据导入到数据库,就是这样,然后有一个字段是图片,能给个好的建议个方法吗?如果直接给详细步骤的话,我就直接给分 --------------------编程问答-------------------- 很好很强大 学习下 话说我之前看过office内嵌winform 使用的一个demo 做的不错
补充:.NET技术 , C#