本文目录一览:
- 1、c#winform 如何导出excel
- 2、winform 如何导入导出EXCEL
- 3、.NET WinForm 大数据导出数据到Excel?
- 4、winform-WinForm怎么使用FastReport报表工具导出Excel
- 5、如何使用c#将Winform下DataGridView中内容导出到Excel
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了。、