C# 导出csv格式的报表

/// <summary>
        /// 导出报表为Csv
        /// </summary>
        /// <param name="dt">DataTable</param>
        /// <param name="strFilePath">物理路径</param>
        /// <param name="tableheader">表头</param>
        /// <param name="columname">字段标题,逗号分隔</param>
        public static bool dt2csv(DataTable dt, string strFilePath, string tableheader, string columname)
        {
            try
            {
                string strBufferLine = "";
                StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8);
                strmWriterObj.WriteLine(tableheader);
                strmWriterObj.WriteLine(columname);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    strBufferLine = "";
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        if (j > 0)
                            strBufferLine += ",";
                        strBufferLine += dt.Rows[i][j].ToString();
                    }
                    strmWriterObj.WriteLine(strBufferLine);
                }
                strmWriterObj.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }

大家可能会用到List转DataTable的方法,附上:

/// <summary>
        /// List转DataTable
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collection"></param>
        /// <returns></returns>
        public static DataTable ToDataTable<T>(IEnumerable<T> collection)
        {
            var props = typeof(T).GetProperties();
            var dt = new DataTable();
            dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
            if (collection.Count() > 0)
            {
                for (int i = 0; i < collection.Count(); i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (PropertyInfo pi in props)
                    {
                        object obj = pi.GetValue(collection.ElementAt(i), null);
                        tempList.Add(obj);
                    }
                    object[] array = tempList.ToArray();
                    dt.LoadDataRow(array, true);
                }
            }
            return dt;
        }

调用的代码:

string file_path = AppDomain.CurrentDomain.BaseDirectory + @"\" + Guid.NewGuid().ToString() + ".csv";
                    DataTable dt = ToDataTable<Enterprise>(LIST_ENTERPRISE);
                    if (dt2csv(dt, file_path, "企业信息", "注册号,公司名称,注册日期,插入时间"))
                    {
                        MessageBox.Show("导出成功,文件位置:" + file_path);
                    }
                    else {
                        MessageBox.Show("导出失败,未知错误");
                    }
时间: 2024-11-06 18:56:53

C# 导出csv格式的报表的相关文章

CSVHelper 导出CSV 格式

public class CSVHelper { System.Windows.Forms.SaveFileDialog saveFileDialog1;//保存 private string header = string.Empty;//标题 /// <summary> /// 初始化打印设置 /// </summary> /// <param name="printID"></param> protected void InitEx

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

转自: http://codingstandards.iteye.com/blog/604541 MySQL中导出CSV格式数据的SQL语句样本如下: select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n'; MySQL中导入CSV格式数据的SQL语句

thinkphp导出csv格式的表格

1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: hanks 5 * Date: 2016/4/20 6 * Time: 13:51 7 */ 8 9 namespace Home\Controller; 10 use Think\Controller; 11 12 class CsvController extends Controller 13 { 14 //导出csv文件 15 private static function put_csv(

我也太牛了,解决了浏览器中,前台导出csv格式,UTF-8编码,且excek打开不乱码!

ExcellentExport.js的方法,利用base64下载文件.支持chrome ,opera,firefox. 于是决定拿来为我所用! 说明一下,这个js的好处是:一句js脚本,就能前台下载,完全无须后台. 但外国人不了解中文的csv用excel打开直接乱码. 但用记事本打开,再直接保存,或另存为ansi都可以让中文不乱码. js里默认应该是utf-8,昨天试了用utf-8转gb2312,失败了! 于是找到这个: utf-8保存的csv格式要让Excel正常打开的话,必须加入在文件最前面

linux 环境下 mysql 导出CSV格式报表

一般情况下不会特意到linux系统上去使用mysql, 毕竟没有类似MysqlFront这样现成的操作工具.但是产品的线上服务器是linux服务器,没办法,只能硬着头皮码shell语句来操作了. 通用语句如下: mysql -u biadmin -h lbw-52xfj.mysql.rds.aliyuncs.com -p -e "你需要的sql语句" > 文件输出位置 -u 是mysql用户名, -h 是主机地址(如果是在本机上操作可以写 "localhost"

java 导出CSV格式文件 EXCEL打开 防止乱码

package net.joystart.excelTask; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import

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

工具/原料 excel 2013 地址链接:http://pan.baidu.com/s/1c1ZABlu 密码:d3rc 方法/步骤 首选我们把需要导出为CVS的Excel文件整理集中到一个文件夹中.然后新建一个文件夹用来保存CSV文件的.支持Xlsx.xls格式.   新建一个EXCEL表格,打开后,点击菜单栏上的"开发工具":功能区下点击打开Visual Basic.   如果菜单栏上没有开发工具,则在选项中添加.点击文件,弹出菜单选择选项.在EXCEL选项中,点击自定义功能区,

mysql远程快速导出csv格式数据工具

如需转载,请经本人同意. 之前本人曾经写过一个使用 select ....into outfile原理导出数据的脚本,但该脚本值适用于本地快速导出,并不支持远程服务,故又编写了下面这个支持远程导出的脚本.该脚本支持导出文件检测.数据库信息检查.如果大家有好的建议欢迎留言评论.脚本总体而言比较简单,希望对大家有帮助 脚本语言:python 版本:2.7 #!/usr/bin/python # -*- coding:UTF-8 -*- #@author Jane.Hoo #@date 2016/11

mysql导出csv格式去除字段中的\n\r

第一种方法 在导出界面,打开csv自定义选项,勾选 "删除字段中的回车换行符" 选项 phpmyadmin版本是3.4 2.X版本没看到这个选项 第二种方法 UPDATE catalog_product_entity_text SET `value` = REPLACE( REPLACE( `value` , CHAR( 10 ) , '' ) , CHAR( 13 ) , '' ) ; 将数据库字段回车符去掉