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;
}
}

最新文章

  1. Spring MVC 访问静态资源
  2. Jaxb annotation使用
  3. js笔记——js数据类型转换
  4. [译]WebVR技术方案草案
  5. Android 亮度调节
  6. SQL删除重复数据
  7. 基于OWIN WebAPI 使用OAuth授权服务【客户端验证授权(Resource Owner Password Credentials Grant)】
  8. 【ASP.NET MVC 5】第27章 Web API与单页应用程序
  9. Android二-.9.png
  10. [VBA] excel获取单元格的超链接地址函数
  11. Scope and Namespace
  12. JAVA HashMap的实现原理
  13. 《Java编程思想》读书笔记-基本规范、注释、static关键字、import关键字
  14. 关于python的展望
  15. 【JXOI2018】守卫
  16. 剑指Offer-- 翻转链表 (python版)
  17. [svc]二三层数据格式&amp;&amp;三层数据如何匹配路由
  18. spring注解 @Scheduled(cron = &quot;0 0 1 * * *&quot;)实现定时的执行任务
  19. Android widget
  20. pycharm设置github

热门文章

  1. mysql数据库备份脚本
  2. FPGA热设计
  3. 安装用于跨平台移动开发的 Visual C++
  4. java代码switch语句求分数等级
  5. 微信小程序之if操作
  6. 使用airodump-ng扫描网络
  7. CentOS7上elasticsearch5.5启动报错
  8. chart左侧
  9. hive自带的字符串函数
  10. mysql如何进行以=分割的字符串的拆分