/// <summary>
/// 构造函数
/// </summary>
public ExportData()
{ }
/// <summary>
/// 保存文件名
/// </summary>
private string savefilename = "";
/// <summary>
/// 准备导出的数据容器
/// </summary>
private System.Windows.Forms.DataGridView datagv;
/// <summary>
/// 导出excel文档
/// </summary>
/// <param name="d">数据所在控件</param>
public void OutDataToExcelByDataSource(System.Windows.Forms.DataGridView dgview)
{
try
{
if (dgview.Columns.Count < )
{
MessageBox.Show("没有导出数据。");
return;
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.ValidateNames = true;
sfd.Filter = "Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx|Access文件(*.mdb)|*.mdb|DBF文件(*.dbf)|*.dbf";
if (sfd.ShowDialog() != DialogResult.OK)
{
return;
}
this.savefilename = sfd.FileName;
//检测文件名是否合法
string tryfile = "";
tryfile = savefilename.Substring(savefilename.LastIndexOf("\\") + );
tryfile = tryfile.Substring(, tryfile.LastIndexOf("."));
foreach (char c in tryfile)
{
if ("<>?:[]|*".Contains(c.ToString()))
{
MessageBox.Show("文件名包含非法字符.");
return;
}
}
this.datagv = dgview;
if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".xlsx" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".xls")
{
outToExcelByDataSource();
}
else if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".mdb" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")) == ".dbf")
{
outToAccessByDataSource();
}
}
catch (Exception W)
{
MessageBox.Show(W.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 导出excel文档
/// </summary>
/// <param name="d">数据所在控件</param>
public void OutDataToExcelByDataTable(System.Windows.Forms.DataGridView dgview)
{
try
{
if (dgview.Columns.Count < )
{
MessageBox.Show("没有导出数据。");
return;
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.ValidateNames = true;
sfd.Filter = "Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx|Access文件(*.mdb)|*.mdb|DBF文件(*.dbf)|*.dbf"; ;
if (sfd.ShowDialog() != DialogResult.OK)
{
return;
}
this.savefilename = sfd.FileName;
//检测文件名是否合法
string tryfile = "";
tryfile = savefilename.Substring(savefilename.LastIndexOf("\\") + );
tryfile = tryfile.Substring(, tryfile.LastIndexOf("."));
foreach (char c in tryfile)
{
if ("<>?:[]|*".Contains(c.ToString()))
{
MessageBox.Show("文件名包含非法字符.");
return;
}
}
this.datagv = dgview;
if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xlsx" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xls")
{
outToExcelByDataTable();
}
else if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".mdb" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".dbf")
{
outToAccessByDataTable();
}
}
catch (Exception W)
{
MessageBox.Show(W.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 导出文档
/// </summary>
public void OutDataByDataTable(DataTable tab)
{
try
{
if (tab.Columns.Count < )
{
MessageBox.Show("没有导出数据。");
return;
}
SaveFileDialog sfd = new SaveFileDialog();
sfd.ValidateNames = true;
sfd.Filter = "Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx|Access文件(*.mdb)|*.mdb|DBF文件(*.dbf)|*.dbf";
if (sfd.ShowDialog() != DialogResult.OK)
{
return;
}
this.savefilename = sfd.FileName;
//检测文件名是否合法
string tryfile = "";
tryfile = savefilename.Substring(savefilename.LastIndexOf("\\") + );
tryfile = tryfile.Substring(, tryfile.LastIndexOf("."));
foreach (char c in tryfile)
{
if ("<>?:[]|*".Contains(c.ToString()))
{
MessageBox.Show("文件名包含非法字符.");
return;
}
}
if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xlsx" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".xls")
{
ExportExcelForm of = new ExportExcelForm();
of.mytable = tab;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
else if (sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".mdb" || sfd.FileName.Substring(sfd.FileName.LastIndexOf(".")).ToLower() == ".dbf")
{
ExportAccessForm of = new ExportAccessForm();
of.mytable = tab;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
}
catch (Exception W)
{
MessageBox.Show(W.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 弹出导出窗口
/// </summary>
private void outToExcelByDataSource()
{
ExportExcelForm of = new ExportExcelForm();
of.mytable = (DataTable)this.datagv.DataSource;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
/// <summary>
/// 弹出导出窗口
/// </summary>
private void outToExcelByDataTable()
{
ExportExcelForm of = new ExportExcelForm(); DataTable dt = new DataTable();
for (int i = ; i < this.datagv.ColumnCount; i++)
{
dt.Columns.Add(this.datagv.Columns[i].HeaderText);
}
DataRow dr;
for (int i = ; i < this.datagv.RowCount; i++)
{
dr = dt.NewRow();
for (int j = ; j < this.datagv.ColumnCount; j++)
{
if (this.datagv.Columns[j].HeaderText == "sqlstring")
{
dr[j] = "";
}
else
{
if (this.datagv.Rows[i].Cells[j].Value == null)
{
dr[j] = "";
}
else
{
dr[j] = this.datagv.Rows[i].Cells[j].Value.ToString();
}
}
}
dt.Rows.Add(dr);
}
of.mytable = dt;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
/// <summary>
/// 弹出导出窗口
/// </summary>
private void outToAccessByDataSource()
{
if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".mdb")
{
ExportAccessForm of = new ExportAccessForm();
of.mytable = (DataTable)this.datagv.DataSource;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
else if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".dbf")
{
ExportDBFForm of = new ExportDBFForm();
of.mytable = (DataTable)this.datagv.DataSource;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
}
/// <summary>
/// 弹出导出窗口
/// </summary>
private void outToAccessByDataTable()
{
try
{
if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".mdb")
{
ExportAccessForm of = new ExportAccessForm();
DataTable dt = new DataTable();
for (int i = ; i < this.datagv.ColumnCount; i++)
{
dt.Columns.Add(this.datagv.Columns[i].HeaderText);
}
DataRow dr;
for (int i = ; i < this.datagv.RowCount; i++)
{
dr = dt.NewRow();
for (int j = ; j < this.datagv.ColumnCount; j++)
{
if (this.datagv.Columns[j].HeaderText == "sqlstring")
{
dr[j] = "";
}
else
{
if (this.datagv.Rows[i].Cells[j].Value == null)
{
dr[j] = "";
}
else
{
dr[j] = this.datagv.Rows[i].Cells[j].Value.ToString();
}
}
}
dt.Rows.Add(dr);
}
of.mytable = dt;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
else if (this.savefilename.Substring(this.savefilename.LastIndexOf(".")).ToLower() == ".dbf")
{
ExportDBFForm of = new ExportDBFForm();
DataTable dt = new DataTable();
for (int i = ; i < this.datagv.ColumnCount; i++)
{
dt.Columns.Add(this.datagv.Columns[i].HeaderText);
}
DataRow dr;
for (int i = ; i < this.datagv.RowCount; i++)
{
dr = dt.NewRow();
for (int j = ; j < this.datagv.ColumnCount; j++)
{
if (this.datagv.Columns[j].HeaderText == "sqlstring")
{
dr[j] = "";
}
else
{
if (this.datagv.Rows[i].Cells[j].Value == null)
{
dr[j] = "";
}
else
{
dr[j] = this.datagv.Rows[i].Cells[j].Value.ToString();
}
}
}
dt.Rows.Add(dr);
}
of.mytable = dt;
if (of.mytable == null)
{
MessageBox.Show("没有导出数据。");
return;
}
of.savefimename = this.savefilename;
of.Show();
}
}
catch
{ }
}

C#winform导出数据到Excel的类的更多相关文章

  1. C#导出数据到Excel通用的方法类

    导出数据到Excel通用的方法类,请应对需求自行修改. 资源下载列表 using System.Data; using System.IO; namespace IM.Common.Tools { p ...

  2. 1.ASP.NET MVC使用EPPlus,导出数据到Excel中

    好久没写博客了,今天特地来更新一下,今天我们要学习的是如何导出数据到Excel文件中,这里我使用的是免费开源的Epplus组件. 源代码下载:https://github.com/caofangshe ...

  3. 导出数据到Excel --使用ExcelReport有感

    先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...

  4. 使用Open xml 操作Excel系列之二--从data table导出数据到Excel

    由于Excel中提供了透视表PivotTable,许多项目都使用它来作为数据分析报表. 在有些情况下,我们需要在Excel中设计好模板,包括数据源表,透视表等, 当数据导入到数据源表时,自动更新透视表 ...

  5. MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

    导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...

  6. php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法

    而关于php的也有,但是大多都是用phpExcel导出的方法或者spreadsheet等类或者控件之类的导出方法,而我所在维护的系统却用很简单的方法,如下,网上很少有讲如何设置要导出数据的EXcel格 ...

  7. 从数据库导出数据到excel之POI操作

    项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...

  8. 导出数据到Excel表格

    开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击 ...

  9. 手把手教你springboot中导出数据到excel中

    手把手教你springboot中导出数据到excel中 问题来源: 前一段时间公司的项目有个导出数据的需求,要求能够实现全部导出也可以多选批量导出(虽然不是我负责的,我自己研究了研究),我们的项目是x ...

随机推荐

  1. Jmeter+Jenkins集成html报告显示问题

    在J meter+Jenkins集成生成的html报告时,出现如下问题:无法正常显示表格,detail内容无法折叠和展开操作. 解决方法:执行下列脚本行 在Jenkins :系统管理--脚本命令行 S ...

  2. 山东省第六届ACM省赛

    A.Nias and Tug-of-War(sort排序) B.Lowest Unique Price(set+map) C.Game!(博弈) D.Stars E.BIGZHUGOD and His ...

  3. (easy)LeetCode 191.Number of 1 Bits

    Number of 1 Bits Write a function that takes an unsigned integer and returns the number of ’1' bits ...

  4. Hdfs增量导入小文件合并的思路

    1.使用mr进行合并 2.使用getmerge 将文件拉取到本地,再上传到hdfs,注意nl参数 3.使用appendToFile 4.使用hadoop提供的打包压缩技术 Usage: hadoop ...

  5. Sqoop导数据出现的问题

    sqoop导数据卡住在INFO mapreduce.Job: Running job: job_1447835049223_0010 查yarn日志全是: INFO org.apache.hadoop ...

  6. ORA-00245: control file backup failed; target is likely on a local file system (转载)

    环境:DB VERSION: 11.2.0.4.0RAC 2 nodes 问题:邮件显示rman备份失败,查看rman备份日志 Starting Control File and SPFILE Aut ...

  7. PetaPoco.Core.ttinclude修改

    /// <summary> /// Adds the singular rule. /// </summary> /// <param name="rule&q ...

  8. Hive表数据导出

    方式一: hadoop命令导出 hadoop fs -get hdfs://hadoop000:8020/data/page_views2 pv2  方式二:通过insert...directory导 ...

  9. Redis数据持久化之RDB持久化

    因为Redis服务器将数据存储在内存里面,而一旦服务器被关闭或者运行服务器的主机本身被关闭的话,存储在内存里面的数据就会消失不见: 如果我们仅仅是将redis用作缓存的话,那么这种数据丢失带来的问题并 ...

  10. CPPUTest 单元测试框架(针对 C 单元测试的使用说明)

    CPPUTest 虽然名称上看起来是 C++ 的单元测试框架, 其实它也是支持测试 C 代码的. 本文主要介绍用CPPUTest来测试 C 代码. (C++没用过, 平时主要用的是C) C++相关的内 ...