public class CSVHelper
{
System.Windows.Forms.SaveFileDialog saveFileDialog1;//保存
private string header = string.Empty;//标题 /// <summary>
/// 初始化打印设置
/// </summary>
/// <param name="printID"></param>
protected void InitExportController(Dictionary<string, object> addition)
{
saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); saveFileDialog1.Filter = "导出CSV (*.csv)|*.csv";
saveFileDialog1.FilterIndex = ;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.CreatePrompt = false;
saveFileDialog1.Title = "导出文件保存路径";
saveFileDialog1.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录 header = addition["HeardTitle"].ToString();
saveFileDialog1.FileName = header;
} /// <summary>
/// 导出
/// </summary>
/// <param name="dt">表格</param>
/// <param name="strFileName">路径</param>
public bool Export(Dictionary<string, object> addition, System.Data.DataTable dt)
{
if (!object.Equals(dt, null))
{
InitExportController(addition);
try
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = saveFileDialog1.FileName;
return ExportToSvc(addition, dt, filename);
}
}
catch
{
saveFileDialog1.FileName = "请输入文件名称";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = saveFileDialog1.FileName;
return ExportToSvc(addition, dt, filename);
}
}
} return false;
} /// <summary>
/// 导出
/// </summary>
/// <param name="gv">内容</param>
/// <param name="strFileName">路径</param>
public bool Export(Dictionary<string, object> addition, DataGridView gv)
{
if (gv.Rows.Count > )
{
InitExportController(addition); try
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = saveFileDialog1.FileName;
return ExportToSvc(addition, gv, filename);
}
}
catch
{
saveFileDialog1.FileName = "请输入文件名称";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string filename = saveFileDialog1.FileName;
return ExportToSvc(addition, gv, filename);
}
}
}
return false;
} /// <summary>
/// 导出为svc文件,strFileName为要导出的csv格式文件的路径和文件名
/// </summary>
/// <param name="addition">头部信息</param>
/// <param name="dt">表格</param>
/// <param name="strFileName">路径</param>
protected bool ExportToSvc(Dictionary<string, object> addition, System.Data.DataTable dt, string strFileName)
{
string strPath = strFileName;
if (File.Exists(strPath))
{
File.Delete(strPath);
} //先打印标头
StringBuilder strColu = new StringBuilder();
StringBuilder strValue = new StringBuilder();
int i = ;
try
{
StreamWriter sw = new StreamWriter(new FileStream(strPath, FileMode.CreateNew), Encoding.GetEncoding("GB2312"));
if (addition.ContainsKey("HeardTitle"))
{
sw.WriteLine(addition["HeardTitle"].ToString());
} if (addition.ContainsKey("Content"))
{
sw.WriteLine(addition["Content"].ToString());
sw.WriteLine();
} for (i = ; i <= dt.Columns.Count - ; i++)
{
if (addition.ContainsKey(dt.Columns[i].ColumnName))
{
strColu.Append(addition[dt.Columns[i].ColumnName].ToString().Trim());
}
else
{
strColu.Append(dt.Columns[i].ColumnName);
}
strColu.Append(",");
}
strColu.Remove(strColu.Length - , );//移出掉最后一个,字符 sw.WriteLine(strColu); foreach (DataRow dr in dt.Rows)
{
strValue.Remove(, strValue.Length);//移出 for (i = ; i <= dt.Columns.Count - ; i++)
{
strValue.Append(dr[i].ToString());
strValue.Append(",");
}
strValue.Remove(strValue.Length - , );//移出掉最后一个,字符
sw.WriteLine(strValue);
}
if (addition.ContainsKey("Foot"))
{
sw.WriteLine();
sw.WriteLine(addition["Foot"].ToString());
}
sw.Close();
return true;
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 导出为svc文件,strFileName为要导出的csv格式文件的路径和文件名
/// </summary>
/// <param name="addition">头部信息</param>
/// <param name="gv">DataGridView控件</param>
/// <param name="strFileName"></param>
protected bool ExportToSvc(Dictionary<string, object> addition, DataGridView gv, string strFileName)
{
string strPath = strFileName;
if (File.Exists(strPath))
{
File.Delete(strPath);
} //先打印标头
StringBuilder strColu = new StringBuilder();
StringBuilder strValue = new StringBuilder();
int i = ;
try
{
StreamWriter sw = new StreamWriter(new FileStream(strPath, FileMode.CreateNew), Encoding.GetEncoding("GB2312")); if (addition.ContainsKey("HeardTitle"))
{
sw.WriteLine(addition["HeardTitle"].ToString());
} if (addition.ContainsKey("Content"))
{
sw.WriteLine(addition["Content"].ToString());
sw.WriteLine();
} for (i = ; i <= gv.Columns.Count - ; i++)
{
if (gv.Columns[i].Visible == true)
{//可见的列导出,隐藏的列过滤
strColu.Append(gv.Columns[i].HeaderText.Trim());
strColu.Append(",");
}
}
strColu.Remove(strColu.Length - , );//移出掉最后一个,字符
sw.WriteLine(strColu); foreach (DataGridViewRow dr in gv.Rows)
{
strValue.Remove(, strValue.Length);//移出 for (i = ; i <= gv.Columns.Count - ; i++)
{
if (gv.Columns[i].Visible == true)
{//可见的导出
strValue.Append(dr.Cells[i].Value.ToString());
strValue.Append(",");
}
}
strValue.Remove(strValue.Length - , );//移出掉最后一个,字符
sw.WriteLine(strValue);
} if (addition.ContainsKey("Foot"))
{
sw.WriteLine();
sw.WriteLine(addition["Foot"].ToString());
} sw.Close();
return true;
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 导出CSV
/// </summary>
/// <param name="title">显示标题</param>
/// <param name="name">文件名</param>
/// <param name="dts">一至多个表源</param>
/// <returns></returns>
public bool Export(string title, string name, params DataTable[] dts)
{
bool result = false;
if (dts != null && dts.Length > )
{
var dict = new Dictionary<string, object>();
dict["HeardTitle"] = name;
InitExportController(dict);
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
using (StreamWriter sw = new StreamWriter(new FileStream(saveFileDialog1.FileName, FileMode.CreateNew), Encoding.GetEncoding("GB2312")))
{
sw.WriteLine(title);
foreach (DataTable dt in dts)
{
StringBuilder strValue = new StringBuilder();
StringBuilder strColu = new StringBuilder();
for (int i = ; i <= dt.Columns.Count - ; i++)
{
strColu.Append(dt.Columns[i].ColumnName);
strColu.Append(",");
}
strColu.Remove(strColu.Length - , );//移出掉最后一个,字符 sw.WriteLine(strColu); foreach (DataRow dr in dt.Rows)
{
strValue.Remove(, strValue.Length);//移出 for (int i = ; i <= dt.Columns.Count - ; i++)
{
strValue.Append(dr[i].ToString());
strValue.Append(",");
}
strValue.Remove(strValue.Length - , );//移出掉最后一个,字符
sw.WriteLine(strValue);
}
sw.WriteLine();
}
}
result = true;
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
}
}
}
return result;
}
/// <summary>
/// 导出CSV
/// </summary>
/// <param name="title">显示标题</param>
/// <param name="name">文件名</param>
/// <param name="dts">一至多个表源</param>
/// <returns></returns>
public bool Export(string title, string name, DataSet ds)
{
bool result = false;
if (ds != null && ds.Tables.Count > )
{
var dict = new Dictionary<string, object>();
dict["HeardTitle"] = name;
InitExportController(dict);
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
using (StreamWriter sw = new StreamWriter(new FileStream(saveFileDialog1.FileName, FileMode.CreateNew), Encoding.GetEncoding("GB2312")))
{
sw.WriteLine(title);
foreach (DataTable dt in ds.Tables)
{
StringBuilder strValue = new StringBuilder();
StringBuilder strColu = new StringBuilder();
for (int i = ; i <= dt.Columns.Count - ; i++)
{
strColu.Append(dt.Columns[i].ColumnName);
strColu.Append(",");
}
strColu.Remove(strColu.Length - , );//移出掉最后一个,字符 sw.WriteLine(strColu); foreach (DataRow dr in dt.Rows)
{
strValue.Remove(, strValue.Length);//移出 for (int i = ; i <= dt.Columns.Count - ; i++)
{
strValue.Append(dr[i].ToString());
strValue.Append(",");
}
strValue.Remove(strValue.Length - , );//移出掉最后一个,字符
sw.WriteLine(strValue);
}
sw.WriteLine();
}
}
result = true;
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
}
}
}
return result;
}
}

CSVHelper 导出CSV 格式的更多相关文章

  1. OAF_文件系列2_实现OAF导出CSV格式文件ExportButton(案例)

    20150727 Created By BaoXinjian

  2. 导出CSV格式文件,用Excel打开乱码的解决办法

    导出CSV格式文件,用Excel打开乱码的解决办法 1.治标不治本的办法 将导出CSV数据文件用记事本打开,然后另存为"ANSI"编码格式,再用Excel打开,乱码解决. 但是,这 ...

  3. java导出csv格式文件

    导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...

  4. mysqldump导出CSV格式及where导出时间范围问题解决

    众所周知,mysqldump不但可以导出sql格式,还可以导出csv格式. 导出CSV格式的具体使用如下命令. mysqldump -uroot -ppassword -S /tmp/mysql999 ...

  5. Bash中使用MySQL导入导出CSV格式数据[转]

    转自: http://codingstandards.iteye.com/blog/604541 MySQL中导出CSV格式数据的SQL语句样本如下:   select * from test_inf ...

  6. 关于导出csv格式文件的身份证号、日期的处理

    EXCEL系统的单元格,默认格式是常规或数值格式下,数字超过10位即以科学计数法显示,对15位以后的数字用0填充. 在导入到Excel.导出csv文件时,对于身份证号自动变成科学计数法的地方,就要做一 ...

  7. thinkphp导出csv格式的表格

    <?php /** * Created by PhpStorm. * User: hanks * Date: 2016/4/20 * Time: 13:51 */ namespace Home\ ...

  8. C#导出.csv格式的excel表

    .cs文件直接贴代码: using System; using System.Collections.Generic; using System.Data; using System.IO; usin ...

  9. excel批量转换为CSV格式,xls批量导出csv格式

    工具/原料   excel 2013 地址链接:http://pan.baidu.com/s/1c1ZABlu 密码:d3rc 方法/步骤     首选我们把需要导出为CVS的Excel文件整理集中到 ...

随机推荐

  1. laravel 中使用定时任务

    Laravel5.3 Artisan Console 文档地址 http://laravelacademy.org/post/6228.html 1.在服务器上查看定时任务有哪些crontab -e ...

  2. SpringMvc入门四----rest风格Url

    知识点: REST风格URL简介 SpringMvc对rest风格的支持 @PathVariable 获取 Url 变量 SpringMvc对静态资源的处理 REST风格URL简介: 我们平时看到的s ...

  3. PTA PAT排名汇总(25 分)

    PAT排名汇总(25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科 ...

  4. angular 本地存储

    localStorage四种方法: localStorage.getItem(key):获取指定key本地存储的值localStorage.setItem(key,value):将value存储到ke ...

  5. PHP字符串的处理(三)-字符串的输出

    1.echo() echo()实际不是一个函数,是一个语言结构,不需要使用括号 <?php $str = "test"; echo $str."<br> ...

  6. Python Twisted网络编程框架与异步编程入门教程

    原作出处:twisted-intro-cn 作者:Dave 译者:杨晓伟 luocheng likebeta 转载声明:版权归原作出处所有,转载只为让更多人看到这部优秀作品合集,如果侵权,请留言告知 ...

  7. 免Oracle客户端程序监听程序配置

    Oracle默认安装时,监听程序和tnsnames程序中的监听方式都是默认的localhost,但免客户端的程序是连接不上的.这时需要: 1.将listener中的(HOST = localhost) ...

  8. VirtualBox 桥接

    1.设置Virtual box,取消DHCP服务 管理->全局设定->网络->Host-Only->网络明细->DHCP服务器->启用服务器选项取消 2.宿机设置 ...

  9. IE回车的一个怪异行为

    IE中在input中回车相当于提交form,会从dom中找最近的button标签触发click事件 <!DOCTYPE html> <html> <head> &l ...

  10. java基础知识(三)之数组

    声明数组: 语法:数据类型[ ] 数组名://例:int[ ] scores;  或者 数据类型 数组名[ ]://例:int scores[ ];分配空间 语法:数组名 = new 数据类型 [ 数 ...