45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何将c#导出数据到Excel?

如何将c#导出数据到Excel?

2016-09-06 04:22:51 来源:www.45fan.com 【

如何将c#导出数据到Excel?

1、filename是导出的文件名

//导出数据到Excel表

public void ExportExcel(DataSet my_Ds, string filename)

{

//DataSet ds = this.SqlDataSource1;

Excel.Application oExcel;

oExcel = new Excel.Application();

try

{

Excel.Workbook oBook;

Object oMissing = System.Reflection.Missing.Value;

oBook = oExcel.Workbooks.Add(oMissing);

HttpResponse response = HttpContext.Current.Response;

int lie = my_Ds.Tables[0].Columns.Count;

int hang = my_Ds.Tables[0].Rows.Count;

int i, j, t;

string panduanstring = "";

i = 1;

for (j = 0; j < lie; j++)//标题

{

oExcel.Cells[1, i++] = my_Ds.Tables[0].Columns[j].ColumnName;

}

t = 1;

for (i = 0; i < hang; i++)//内容

{

for (j = 0; j < lie; j++)

{

panduanstring = my_Ds.Tables[0].Rows[i][j].ToString();

if (panduanstring.GetType().ToString() == "System.String")

{

oExcel.Cells[i + 2, t++] = "'" + my_Ds.Tables[0].Rows[i][j].ToString();

}

else

oExcel.Cells[i + 2, t++] = my_Ds.Tables[0].Rows[i][j].ToString();

}

t = 1;

}

oExcel.Visible = true;

oBook.Saved = true;

oExcel.UserControl = false;

string path = Server.MapPath("excel/");

string mm = path + filename + ".xls";

oExcel.ActiveWorkbook.SaveCopyAs(mm);

oExcel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oExcel);

GC.Collect();

response.Redirect("excel/" + filename + ".xls");

//oExcel.Quit();

//System.IO.File.Delete(path + filename + ".xls");

}

catch

{

//oExcel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject((object)oExcel);

GC.Collect();

}

}

2、

using System;

using System.Data;

using System.Windows.Forms;

using System.IO;

namespace wsbmdcsj.operation

{

/// <summary>

/// ExportExcel 的摘要说明。

/// </summary>

public class ExportExcel

{

public ExportExcel()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

//DataGrid导出Excel

public void ExptExcel(DataSet dataset)

{

DataSet ds = dataset;//取得dataGrid绑定的DataSet

if(ds==null) return;

string saveFileName="";

//bool fileSaved=false;

SaveFileDialog saveDialog=new SaveFileDialog();

saveDialog.DefaultExt ="xls";

saveDialog.Filter="Excel文件|*.xls";

saveDialog.FileName ="Sheet1";

saveDialog.ShowDialog();

saveFileName=saveDialog.FileName;

if(saveFileName.IndexOf(":")<0) return; //被点了取消

Excel.Application xlApp=new Excel.Application();

if(xlApp==null)

{

MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");

return;

}

System.Windows.Forms.Application.DoEvents();

Excel.Workbooks workbooks=xlApp.Workbooks;

Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1

Excel.Range range;

//string oldCaption=this

long totalCount=ds.Tables[0].Rows.Count;//ds.Tables[0].Rows.Count;

//long rowRead=0;

//float percent=0;

//worksheet.Cells[1,1]=title;

//写入字段

for(int i=0;i<ds.Tables[0].Columns.Count;i++)

{

worksheet.Cells[1,i+1]=ds.Tables[0].Columns[i].ColumnName;

range=(Excel.Range)worksheet.Cells[1,i+1];

range.Interior.ColorIndex = 15;

range.Font.Bold = true;

}

//写入数值

//this.CaptionVisible = true;

for(int r=0;r<ds.Tables[0].Rows.Count;r++)

{

for(int i=0;i<ds.Tables[0].Columns.Count;i++)

{

worksheet.Cells[r+2,i+1]=ds.Tables[0].Rows[r][i];

}

//rowRead++;

//percent=((float)(100*rowRead))/totalCount;

//this.CaptionText = "正在导出数据["+ percent.ToString("0.00") +"%]...";

System.Windows.Forms.Application.DoEvents();

}

//this.CaptionVisible = false;

//this.CaptionText = oldCaption;

range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds.Tables[0].Rows.Count+2,ds.Tables[0].Columns.Count]);

range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);

//range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;

//range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;

//range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;

if(ds.Tables[0].Columns.Count>1)

{

range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;

range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;

}

if(saveFileName!="")

{

try

{

workbook.Saved =true;

workbook.SaveCopyAs(saveFileName);

//fileSaved=true;

}

catch(Exception ex)

{

//fileSaved=false;

MessageBox.Show("导出文件时出错,文件可能正被打开!/n"+ex.Message);

}

}

//else

//{

//fileSaved=false;

//}

xlApp.Quit();

GC.Collect();//强行销毁

//导出后启动Excel

//if(fileSaved && File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName);

MessageBox.Show("成功导出Excell!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}

}

 

本文地址:http://www.45fan.com/a/question/72952.html
Tags: 导出 数据 excel
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部