最近工作中需要做一个把用户信息作为excel导出的功能,就顺便整理搜集了一些常用的导出文件的源代码,以供以后不时之需,也希望能给大家带来一些方便

一、DataSet数据集内数据转化为Excel

// 作用:把DataSet数据集内数据转化为Excel文件
// 描述:这些关于Excel的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后
// 生成Xml格式,再导入数据库! 
// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。

public void DataSetToExcel(DataSet ds,string FileName)
{
try
{
//Web页面定义
//System.Web.UI.Page mypage=new System.Web.UI.Page(); HttpResponse resp;
resp=HttpContext.Current.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".xls");
resp.ContentType="application/ms-excel"; //变量定义
string colHeaders=null;
string Is_item=null; //显示格式定义//////////////// //文件流操作定义
//FileStream fs=new FileStream(FileName,FileMode.Create,FileAccess.Write);
//StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312")); StringWriter sfw=new StringWriter();
//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[];
DataRow[] myRow=dt.Select();
int i=;
int cl=dt.Columns.Count; //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for(i=;i<cl;i++)
{
//if(i==(cl-1)) //最后一列,加\n
// colHeaders+=dt.Columns[i].Caption.ToString();
//else
colHeaders+=dt.Columns[i].Caption.ToString()+"\t";
}
sfw.WriteLine(colHeaders);
//sw.WriteLine(colHeaders); //逐行处理数据
foreach(DataRow row in myRow)
{
//当前数据写入
for(i=;i<cl;i++)
{
//if(i==(cl-1))
// Is_item+=row[i].ToString()+"\n";
//else
Is_item+=row[i].ToString()+"\t";
}
sfw.WriteLine(Is_item);
//sw.WriteLine(Is_item);
Is_item=null;
}
resp.Write(sfw);
//resp.Clear();
resp.End();
}
catch(Exception e)
{
throw e;
}
}

二、DataSet数据集内数据转化为Excel文件(2)

/// <summary>
/// 作用:把DataSet数据集内数据转化为Excel文件
/// 描述:导出Excel文件
/// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。

/// </summary>

public class ExportFiles
{
private string filePath = "";
public ExportFiles(string excel_path)
{
//
// TODO: 在此处添加构造函数逻辑
//
filePath = excel_path;
}
/// <summary>
/// 将指定的Dataset导出到Excel文件
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public bool ExportToExcel(System.Data.DataSet ds, string ReportName)
{
if (ds.Tables[].Rows.Count == )
{
MessageBox.Show("数据集为空");
}
Microsoft.Office.Interop.Excel._Application xlapp = new ApplicationClass();
Workbook xlbook = xlapp.Workbooks.Add(true);
Worksheet xlsheet = (Worksheet)xlbook.Worksheets[];
Range range = xlsheet.get_Range(xlapp.Cells[, ], xlapp.Cells[, ds.Tables[].Columns.Count]);
range.MergeCells = true;
xlapp.ActiveCell.FormulaR1C1 = ReportName;
xlapp.ActiveCell.Font.Size = ;
xlapp.ActiveCell.Font.Bold = true;
xlapp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
int colIndex = ;
int RowIndex = ;
//开始写入每列的标题
foreach (DataColumn dc in ds.Tables[].Columns)
{
colIndex++;
xlsheet.Cells[RowIndex, colIndex] = dc.Caption;
}
//开始写入内容
int RowCount = ds.Tables[].Rows.Count;//行数
for (int i = ; i < RowCount; i++)
{
RowIndex++;
int ColCount = ds.Tables[].Columns.Count;//列数
for (colIndex = ; colIndex <= ColCount; colIndex++)
{
xlsheet.Cells[RowIndex, colIndex] = ds.Tables[].Rows[i][colIndex - ];//dg[i, colIndex - 1];
xlsheet.Cells.ColumnWidth = ds.Tables[].Rows[i][colIndex - ].ToString().Length;
}
} xlbook.Saved = true;
xlbook.SaveCopyAs(filePath);
xlapp.Quit();
GC.Collect();
return true;
} public bool ExportToExcelOF(System.Data.DataSet ds, string ReportName)
{
if (ds.Tables[].Rows.Count == )
{
MessageBox.Show("数据集为空");
}
string FileName = filePath; //System.Data.DataTable dt = new System.Data.DataTable();
FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine = "";
objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode); strLine = ReportName;
objStreamWriter.WriteLine(strLine);
strLine = ""; for (int i = ; i < ds.Tables[].Columns.Count; i++)
{
strLine = strLine + ds.Tables[].Columns[i].ColumnName.ToString() + " " + Convert.ToChar();
}
objStreamWriter.WriteLine(strLine);
strLine = ""; for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
strLine = strLine + (i + ) + Convert.ToChar();
for (int j = ; j < ds.Tables[].Columns.Count; j++)
{
strLine = strLine + ds.Tables[].Rows[i][j].ToString() + Convert.ToChar();
}
objStreamWriter.WriteLine(strLine);
strLine = "";
}
objStreamWriter.Close();
objFileStream.Close(); //Microsoft.Office.Interop.Excel._Application xlapp = new ApplicationClass();
//Workbook xlbook = xlapp.Workbooks.Add(true);
//Worksheet xlsheet = (Worksheet)xlbook.Worksheets[1];
//Range range = xlsheet.get_Range(xlapp.Cells[1, 1], xlapp.Cells[1, ds.Tables[0].Columns.Count]);
//range.EntireColumn.AutoFit();
//xlapp.Quit();
return true;
}
}

三、导出GridView到Excel

//导出GridView到Excel中的关键之处
//用法: ToExcel(GVStaff, TextBox1.Text);

public static void ToExcel(System.Web.UI.Control ctl,string FileName)
{
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType ="application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+""+FileName+".xls");
ctl.Page.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
} 必须有下面这句!否则不会通过!
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}

四、DataTable导出到Excel

public class DataTableToExcel
{
private DataTableToExcel()
{ }
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="dt">要导出的DataTable</param>
public static void ExportToExcel(System.Data.DataTable dt )
{
if (dt == null) return; Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
// lblMsg.Text = "无法创建Excel对象,可能您的电脑未安装Excel";
MessageBox.Show( "无法创建Excel对象,可能您的电脑未安装Excel" );
return;
}
System.Windows.Forms.SaveFileDialog saveDia = new SaveFileDialog();
saveDia.Filter = "Excel|*.xls";
saveDia.Title = "导出为Excel文件";
if(saveDia.ShowDialog()== System.Windows.Forms.DialogResult.OK
&& !string.Empty.Equals(saveDia.FileName))
{
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[];//取得sheet1
Microsoft.Office.Interop.Excel.Range range = null;
long totalCount = dt.Rows.Count;
long rowRead = ;
float percent = ;
string fileName = saveDia.FileName;
//写入标题
for (int i = ; i < dt.Columns.Count; i++)
{
worksheet.Cells[, i + ] = dt.Columns[i].ColumnName;
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[, i + ];
//range.Interior.ColorIndex = 15;//背景颜色
range.Font.Bold = true;//粗体
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;//居中
//加边框
range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
//range.ColumnWidth = 4.63;//设置列宽
//range.EntireColumn.AutoFit();//自动调整列宽
//r1.EntireRow.AutoFit();//自动调整行高
}
//写入内容
for (int r = ; r < dt.DefaultView.Count; r++)
{
for (int i = ; i < dt.Columns.Count; i++)
{
worksheet.Cells[r + , i + ] = dt.DefaultView[r][i];
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[r + , i + ];
range.Font.Size = ;//字体大小
//加边框
range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
range.EntireColumn.AutoFit();//自动调整列宽
}
rowRead++;
percent = ((float)( * rowRead)) / totalCount;
System.Windows.Forms.Application.DoEvents();
}
range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
if (dt.Columns.Count > )
{
range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
}
try
{
workbook.Saved = true;
workbook.SaveCopyAs(fileName);
}
catch (Exception ex)
{
//lblMsg.Text = "导出文件时出错,文件可能正被打开!\n" + ex.Message;
MessageBox.Show( "导出文件时出错,文件可能正被打开!\n" + ex.Message );
return;
} workbooks.Close();
if (xlApp != null)
{
xlApp.Workbooks.Close();
xlApp.Quit();
int generation = System.GC.GetGeneration(xlApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
System.GC.Collect(generation);
}
GC.Collect();//强行销毁
#region 强行杀死最近打开的Excel进程
System.Diagnostics.Process[] excelProc = System.Diagnostics.Process.GetProcessesByName("EXCEL");
System.DateTime startTime = new DateTime();
int m, killId = ;
for (m = ; m < excelProc.Length; m++)
{
if (startTime < excelProc[m].StartTime)
{
startTime = excelProc[m].StartTime;
killId = m;
}
}
if (excelProc[killId].HasExited == false)
{
excelProc[killId].Kill();
}
#endregion
MessageBox.Show( "导出成功!" );
}
}
}

五、DataTable导出到excel(2)

StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter( stringWriter );
DataGrid excel = new DataGrid();
System.Web.UI.WebControls.TableItemStyle AlternatingStyle = new TableItemStyle();
System.Web.UI.WebControls.TableItemStyle headerStyle = new TableItemStyle();
System.Web.UI.WebControls.TableItemStyle itemStyle = new TableItemStyle();
AlternatingStyle.BackColor = System.Drawing.Color.LightGray;
headerStyle.BackColor =System.Drawing.Color.LightGray;
headerStyle.Font.Bold = true;
headerStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
itemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;; excel.AlternatingItemStyle.MergeWith(AlternatingStyle);
excel.HeaderStyle.MergeWith(headerStyle);
excel.ItemStyle.MergeWith(itemStyle);
excel.GridLines = GridLines.Both;
excel.HeaderStyle.Font.Bold = true;
excel.DataSource = dt.DefaultView;//输出DataTable的内容
excel.DataBind();
excel.RenderControl(htmlWriter); string filestr = "d:\\data\\"+filePath; //filePath是文件的路径
int pos = filestr.LastIndexOf( "\\");
string file = filestr.Substring(,pos);
if( !Directory.Exists( file ) )
{
Directory.CreateDirectory(file);
}
System.IO.StreamWriter sw = new StreamWriter(filestr);
sw.Write(stringWriter.ToString());
sw.Close();

C#数据导出到Excel源代码的更多相关文章

  1. 学习笔记 DataGridView数据导出为Excel

    DataGridView数据导出为Excel   怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...

  2. 将C1Chart数据导出到Excel

    大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...

  3. vb.net-三种将datagridview数据导出为excel文件的函数

    第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll  office.dll #Region "导出excel函数 ...

  4. 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  5. 数据导出到Excel中

    自己修改后的一个数据导出到Excel的方法,粘出来与大家共享. 只需要将             System.Web.HttpContext.Current.Response.Charset =   ...

  6. asp.net将数据导出到excel

    本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...

  7. 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>

    前台datagrid数据绑定 #region 导出到excel中    /// <summary>    /// 2014-6-6    /// </summary>    / ...

  8. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

  9. Qt中将QTableView中的数据导出为Excel文件

    如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...

随机推荐

  1. Codeforces Round #386 (Div. 2) C D E G

    一场比较简单的题 比较脑洞 C 如果坐车比较快的话 先走不如等车 所以最后的ans是min(纯走路,纯坐车) 讨论一下坐车时间 D 因为k一定是>=1的 所以当a=b的时候 GBGBGB这样间隔 ...

  2. poj 2115 C Looooops 扩展欧几里德

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23616   Accepted: 6517 Descr ...

  3. JMeter-Window10系统下设置环境变量

    首先我们右击此电脑(我的电脑),点击属性   接下来我们就可以进入到控制面板主页,点击[高级系统设置]   在系统属性里面,点击[环境变量]按钮   在环境变量里面,点击[新建]按钮   接下来我们输 ...

  4. sublime 编译C++

    http://www.yalewoo.com/sublime_text_3_gcc.html 这篇博客很强 完美解决在sublime里写C++无法输入的问题 sublime text 3配置c/c++ ...

  5. PHP使用header+Location实现网站301重定向

    对于我们SEO人员来说,有的时候需要对网站进行重定向.一般来说,对网站重定向的http返回状态码是301和302两种.下面兰州SEO就通过实例来为你介绍一下怎样通过PHP使用header+Locati ...

  6. dp3--codevs2598 编辑距离问题

    dp3--codevs2598 编辑距离问题 一.心得 1.字符串相关问题dp的时候从0开始是个陷阱 二.题目 2598 编辑距离问题  时间限制: 1 s  空间限制: 128000 KB  题目等 ...

  7. C# 6.0 (VS2015 CTP6)

    /* C# 6.0 demo https://github.com/dotnet/roslyn/wiki/Languages-features-in-C%23-6-and-VB-14 */ using ...

  8. SVN中如何为文件夹中的所有文件加锁

    经过一段时间的试用,发现不加锁的共享式开发还是不太方便.还是全部设置为独占式加锁,如有共享式修改需求再设置为不加锁比较好. 经过一番摸索,总结出如下的加锁方式是可行的: 注:第一步是必须的,必须完成第 ...

  9. 20165210 Java第二周学习总结

    20165210 Java第二周学习总结 教材学习内容总结 - 第二章学习总结 标识符与关键字: 重点在50个关键字 标识符并不能是关键字 标识符的第一个字符不能是数字字符 Unicode字符集简单了 ...

  10. 修改dedecms 列表页上一页 下一页 方法!

    dedecms根目录下include文件夹下:arc.listview.class.php文件! 1.简单文字替换:如 上一页替换成上页,直接替换即可! 2.文字替换成图片:上一页替换成<img ...