1.直接写成文本文件,后缀改成.csv
2.调用EXCEL的COM控件.
2.调用EXCEL的COM控件.
解决方案 »
- 用visual studio2010做的简单开发
- winform将图片以二进制存入Access数据库
- 问个接口实现的基础问题。多谢
- 关于数组的问题
- IE奇怪的问题..偶不想重装系统啊!!
- 我执行两个存储过程返回查询到的记录集,想将两个记录集放在一个DATESET里..第一个放在table[0]里.第二个放在table[1]里.怎么帮?
- datagrid固定列宽的问题(紧急求助)
- 问个极度菜的问题(当我送分吧)
- 我在C#中using Microsft.Xml.XQuery,请问在哪里能download到Microsoft的XQuery类库 ????急用!!
- 控件的问题
- 像CSDN论坛左侧的导航栏这样的treeview是怎样做成的?
- 单机版exe,如何限制使用天数?
导出内容到 Excel 是通过使用 COM 组件实现的. Excel 系统中主文件 Excel.exe 本身就是 COM 组件,通过在.NET 项目引用Excel.exe 文件可以实现对 Excel的功能控制与 COM 组件相互操作是通过使用 "包装类(Wrapper Class)" 和 类似 "代理"(Proxy) 的机制实现的.
包装类使.NET 程序可以识别 COM 组件提供的接口,而代理类侧提供对 COM 接口的访问.using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;namespace CSharpPrj
{
class ExcelExport
{
private object _optionValue = System.Reflection.Missing.Value; //如果 Excel 安装在计算机上,侧导出表格内容到Excel
public void ExportTesks(DataSet ds,DataView dv,DataGridView dgv)
{
//定义 Application 对象,此对象表示整个 Excel 程序
Microsoft.Office.Interop.Excel.Application excelApp; //定义 Workbook 对象,此对象代表工作薄
Microsoft.Office.Interop.Excel.Workbook wb; //定义Worksheet 对象,此对象表示 Excel 中的一张工作表
Microsoft.Office.Interop.Excel.Worksheet ws; //定义Range 对象,此对象 代表单元格区域
Microsoft.Office.Interop.Excel.Range r; int row = 1;
int cell = 1;
int priorityHeight, priorityNoraml, priorityLow; try
{
//初始化 Application 对象 excelApp
excelApp = new Microsoft.Office.Interop.Excel.Application();
//在工作薄的一个工作表上创建任务列表
wb=excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); //引用第一行第一列的 ws = (Worksheet)wb.Worksheets[1];
}
catch (Exception ex)
{
throw ex;
}
//命名工作表的名称为"Task Managere"
ws.Name = "Task Management"; // 设置第一行第一列的值单元格的值
ws.Cells[row, 1] = "Tasks as of" + System.DateTime.Now.ToShortDateString(); //引用第一行第一列的单元格,并显示转换为Range 类型 r =(Range)ws.Cells[row, 1];
// 设置单元格的字体加黑
r.Font.Bold = true;
// 遍历数据表中的所有列 ...........
//创建行,把数据试图记录输出到对应的Excel 单元格... }
}
}
...{ string filename;
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择将导出的EXCEL文件存放路径";
sfd.Filter="excel文档(*.xls)|*.xls";
//sfd.OpenFile();
sfd.ShowDialog();
if (sfd.FileName != "")
...{
if(sfd.FileName.LastIndexOf(".xls")<=0)
...{
sfd.FileName=sfd.FileName+".xls";
}
filename=sfd.FileName;
if(System.IO.File.Exists(filename))
...{
System.IO.File.Delete(filename);
}
Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
if (xlApp == null)
...{
MessageBox.Show("无法创建Excel对象,可能您的机器未安装Excel");
return;
}
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
DataTable dt1 = (DataTable)dataGrid2.DataSource;
float percent=0;
long rowRead=0;
if(dt1==null)
...{
MessageBox.Show("1");
return;
}
long totalCount=dt1.Rows.Count;
this.progressBar1.Visible=true;
for (int i = 0; i < dt1.Rows.Count; i++)
...{
this.progressBar1.Value=i;
for (int j = 0; j < dt1.Columns.Count; j++)
...{
if (i == 0)
...{
worksheet.Cells[1, j + 1] = dt1.Columns[j].ColumnName;
}
worksheet.Cells[i + 2, j + 1] = dt1.Rows[i][j].ToString();
}
rowRead++;
percent=((float)(100*rowRead))/totalCount;
this.progressBar1.Text= "正在导出数据["+ percent.ToString("0.00") +"%]...";
}
this.progressBar1.Visible=false;
workbook.Saved = true;
workbook.SaveCopyAs(filename);
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
worksheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
workbooks.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
workbooks = null;
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
MessageBox.Show("导出Excel完成!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
//button2_Click(null,null);}
}
catch(Exception ex)
...{
MessageBox.Show("导出Excel失败!"+ex.Message,"错误",MessageBoxButtons.OK,MessageBoxIcon.Information);
}