本文目录一览:

c#winform 如何导出excel

楼上导出的只是普通文本格式不是真正的excel文件,导出excel文件需要引用excel组件,在你的项目bin目录中右键选择引用找到类似Interop.Microsoft.Office.Interop.Excel.dll的文件引入进去,然后调用相关函数就可以了以下代码是我从我的项目中扣出来的,请自己改一下相关数据。usingMicrosoft.Office.Interop.Excel;GC.Collect();Applicationexcel;_WorkbookxBk;_WorksheetxSt;excel=newApplicationClass();xBk=excel.Workbooks.Add(true);xSt=(_Worksheet)xBk.ActiveSheet;////设置标题////设置标题excel.Cells[1,1]="姓名";excel.Cells[1,2]="身份证";xSt.get_Range(excel.Cells[1,1],excel.Cells[1,colCountStaff]).HorizontalAlignment=XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐for(inti=1;i=rowCountStaff;i++){excel.Cells[i+1,1]="'"+listStaff[i-1].Name;excel.Cells[i+1,2]="'"+listStaff[i-1].CardNO;}for(inti=1;i=rowCountCompany;i++){excel.Cells[i+1,5]="'"+listCompany[i-1].ID;excel.Cells[i+1,6]="'"+listCompany[i-1].Name;excel.Cells[i+1,7]="'"+listCompany[i-1].ParentID;}////显示效果////设置选中的部分的颜色xSt.get_Range(xSt.Cells[1,1],xSt.Cells[1,colCountStaff]).Select();xSt.get_Range(xSt.Cells[1,1],xSt.Cells[1,colCountStaff]).Interior.ColorIndex=19;//设置为浅黄色,共计有56种xSt.get_Range(xSt.Cells[1,1],xSt.Cells[rowCountStaff+1,colCountStaff]).Columns.AutoFit();//绘制边框xSt.get_Range(xSt.Cells[1,1],xSt.Cells[rowCountStaff+1,colCountStaff]).Borders.LineStyle=1;excel.Visible=false;stringfileName=DateTime.Now.ToString("yyyyMMddhhmmss");//设置导出文件的名称xBk.SaveCopyAs(Server.MapPath("~")+"//Excel//download//"+fileName+".xls");//ds=null;xBk.Close(false,null,null);excel.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);xBk=null;excel=null;xSt=null;GC.Collect();stringpath=Server.MapPath("~")+"//Excel//download//"+fileName+".xls";System.IO.FileInfofile=newSystem.IO.FileInfo(path);Response.Clear();Response.Charset="GB2312";Response.ContentEncoding=System.Text.Encoding.UTF8;//添加头信息,为"文件下载/另存为"对话框指定默认文件名Response.AddHeader("Content-Disposition","attachment;filename="+Server.UrlEncode(file.Name));//添加头信息,指定文件大小,让浏览器能够显示下载进度Response.AddHeader("Content-Length",file.Length.ToString());//指定返回的是一个不能被客户端读取的流,必须被下载Response.ContentType="application/ms-excel";//把文件流发送到客户端Response.WriteFile(file.FullName);//停止页面的执行Response.End();

winform 如何导入导出EXCEL

首先在你的项目里添加引用

Microsoft.Office.Interop.Excel.dll然后

//创建对象

Microsoft.Office.Interop.Excel.Application

ecl

=

new

Microsoft.Office.Interop.Excel.Application();

ecl.Workbooks.Add(true);//允许工作区域放东西//举例子

ecl.Cells[1,

1]

=

"姓名";

ecl.Cells[1,

2]

=

"学号";

ecl.Cells[1,

3]

=

"性别";

ecl.Cells[1,

4]

=

"年龄";

ecl.Cells[1,

5]

=

"座位";

ecl.Cells[1,

6]

=

"住址";

//////////////////////

for

(int

i

=

2;

i

ds.Tables["stuInfo"].Rows.Count

+

2;

i++)

{

ecl.Cells[i,

1]

=

ds.Tables["stuInfo"].Rows[i

-

2][0].ToString();

ecl.Cells[i,

2]

=

ds.Tables["stuInfo"].Rows[i

-

2][1].ToString();

ecl.Cells[i,

3]

=

ds.Tables["stuInfo"].Rows[i

-

2][2].ToString();

ecl.Cells[i,

4]

=

ds.Tables["stuInfo"].Rows[i

-

2][3].ToString();

ecl.Cells[i,

5]

=

ds.Tables["stuInfo"].Rows[i

-

2][4].ToString();

ecl.Cells[i,

6]

=

ds.Tables["stuInfo"].Rows[i

-

2][5].ToString();

}

ecl.Visible

=

true;//显示EXCEL

.NET WinForm 大数据导出数据到Excel?

40万行的数据,winform里面显示出来的肯定也只是一部分吧,用数据库导出比较好。不过数据多,用控件直接导出也可以的,只是要主要设置好超时时间。注意下要导出到excel2007及以上的版本。2003只支持65536行

winform-WinForm怎么使用FastReport报表工具导出Excel

DataSet数据集内数据转化为Excel文件

/// summary

/// ExportFiles 的摘要说明。

/// 作用:把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[0].Rows.Count == 0)

{

MessageBox.Show("数据集为空");

}

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.MergeCells = true;

xlapp.ActiveCell.FormulaR1C1 = ReportName;

xlapp.ActiveCell.Font.Size = 20;

xlapp.ActiveCell.Font.Bold = true;

xlapp.ActiveCell.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;

int colIndex = 0;

int RowIndex = 2;

//开始写入每列的标题

foreach (DataColumn dc in ds.Tables[0].Columns)

{

colIndex++;

xlsheet.Cells[RowIndex, colIndex] = dc.Caption;

}

//开始写入内容

int RowCount = ds.Tables[0].Rows.Count;//行数

for (int i = 0; i RowCount; i++)

{

RowIndex++;

int ColCount = ds.Tables[0].Columns.Count;//列数

for (colIndex = 1; colIndex = ColCount; colIndex++)

{

xlsheet.Cells[RowIndex, colIndex] = ds.Tables[0].Rows[i][colIndex - 1];//dg[i, colIndex - 1];

xlsheet.Cells.ColumnWidth = ds.Tables[0].Rows[i][colIndex - 1].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[0].Rows.Count == 0)

{

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 = 0; i ds.Tables[0].Columns.Count; i++)

{

strLine = strLine + ds.Tables[0].Columns[i].ColumnName.ToString() + " " + Convert.ToChar(9);

}

objStreamWriter.WriteLine(strLine);

strLine = "";

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

{

strLine = strLine + (i + 1) + Convert.ToChar(9);

for (int j = 1; j ds.Tables[0].Columns.Count; j++)

{

strLine = strLine + ds.Tables[0].Rows[i][j].ToString() + Convert.ToChar(9);

}

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;

}

}

如何使用c#将Winform下DataGridView中内容导出到Excel

需要使用插件,

1、微软的EXCEL插件,(DLL) ,需要运行程序的机器上安装的有对应版本的EXCEL,慢。

2、NPOI(第三方),不需要其他约束,二进制处理,极快。

两种插件思路都是按照 单元格来处理EXCEL读写,可以自己查询文档,很简单的。

比如

var st1 = wk.GetSheetAt(0);// EXCEL的第一个sheet。

var row = st1.GetRow(0);//该sheet的第一行。

var cell = row.GetCell(0); //该行的第一个单元格,

然后就是赋值了,

cell.SetCellValue = "你要赋的值";

然后遍历整个sheet 就OK了。

最后存起来。

using (Stream s = File.OpenWrite(Path+".xlsx"))

{

wk.Write(s);

}

DataGrid其实格式和Excel一样的, 你一次取一行,然后从第一列开始遍历,给EXCEL赋值就好了.

var value = Mydatagrid.Row[i][j]; 其实就是个数据表,分别指定行数和列数,就取出来值了。

自己转换一下数据类型,给EXCEL就OK了。、