C# 动态(不定)类型和不定参数数量,使用param写入CSV文档的最简单方法,提供excel(或记事本)阅读支持格式
在开发一个项目,使用C#写入CSV文件时,虽并未遇到太多阻碍,但是很多小伙伴估计和我有过同样的想法。简单的写入CSV,固定参数数量就好了很简单写完。但是如果遇到你得到的数据参数数量和参数类型未知或者动态变化怎么办,似乎好像不能固定在某几个形参中。因为我总想着每次造轮子(或写脚本)都想要做成自己的dll封装起来,等到第二次用的时候就能直接使用,不用再造一次车轮。
减少重复工作是程序员提高效率的有效办法之一,而且终身受用,哪怕轮子不合适也是在源代码上增加接口或方法来拓展,哪天就成了“万用”轮子呢。
废话结束,直入主题。
1、形参使用了 params 搭配 object ,动态参数输入,也就是不知参数的数量和各个参数的类型,进行输入。第一次琢磨出的用法,并不知在意其中的“风险”。
2、string temp = head + i.ToString() + ",4" + tail; 这句是占用符和格式字符串的使用,其实就是熟悉的 Console.WriteLine(“工号{0}, 姓名{1}, 年龄{2}”, n1,n2,n3);其中引号部分的格式。
3、if(i == array.Length-1) 其实是为了增加分隔符[,],旨在为了在excel中能正常分隔显示,此处你不需要可忽略。
4、补充了需要文件操作的代码,可以参考一下。最喜欢简单实用的代码,比长篇大论是不是大家更有耐心看完。
5、WriteCSV_Array()的使用,我是写到了一个事件当中,实际测试我就放到按钮中,这两段代码已经实现了整个CSV文件的写入,当然是关闭代码,或程序终止(暂停)后仍有保存。效果就是写入CSV文件,事件每触发一次,就写一行。参数类型:整数、double、浮点、字符串都能正常写入,参数数量当然是任意的。
6、最后希望看到的朋友多多支持,评论一下,有不足的我加以修改,有用的是对我的勉励,谢谢大家!
public void WriteCSV_Array(params object[] array)
{
string writeString = "";
string head = "{";
string tail = "}";
for (int i = ; i < array.Count();i++)
{
string temp = head + i.ToString() + ",4" + tail;//效果:{0,4}
if(i == array.Length-)//如果是最后一个元素,不加分隔符[,]
{
writeString = writeString + temp;
}
else //不是最尾元素,则加分隔符[,],分隔符作用是在:用excel打开时,分隔单元显示
{
writeString = writeString + temp + ",";//效果:{0,4},{1,4},...
}
}
if (File.Exists(@"E:\Test1.csv"))
{
sw.WriteLine(writeString, array);// new Object[] {array});
sw.Flush();
}
else
{ //如果无该文件,重新初始化一次
InitCSVControl();
}
}
public void InitCSVControl(string filePath = @"E:\",string fileName = @"TestCSVdll.csv",
FileMode mode = FileMode.Create,
FileAccess access = FileAccess.Write)
{
string pathName = filePath + fileName;
fs = new FileStream(pathName, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs);
}
private void button1_Click(object sender, EventArgs e)
{
object[] array;
array = new object[] { 0.0011, 0.0022, 0.0033, 0.0044, 0.0055 };
csv_controller.WriteCSV_Array(array);
}
C# 动态(不定)类型和不定参数数量,使用param写入CSV文档的最简单方法,提供excel(或记事本)阅读支持格式的更多相关文章
- Elasticsearch 关键字:索引,类型,字段,索引状态,mapping,文档
1. 索引(_index)索引:说的就是数据库的名字.我这个说法是对应到咱经常使用的数据库. 结合es的插件 head 来看. 可以看到,我这个地方,就有这么几个索引,索引就是数据库,后面是这个数据库 ...
- 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ...
- silverlight 生产图表(动态图表类型,Y轴数量) .xaml.cs文件
silverlight 页面后台方法 .xaml.cs文件 public void CreateChart(Grid oGrid, ObservableCollection<ListItem&g ...
- Apache DolphinScheduler 使用文档(6/8):任务节点类型与任务参数设置
本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 6. 任务节点类型和参数设置 6.1 Shell节点 ...
- 第10章 文档对象模型DOM 10.2 Document类型
Document 类型 JavaScript 通过 Document 类型表示文档.在浏览器中, document 对象是 HTMLDocument (继承自 Document 类型)的一个实例,表示 ...
- 深入理解DOM节点类型第七篇——文档节点DOCUMENT
× 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...
- ElasticSearch 5学习(8)——分布式文档存储(wait_for_active_shards新参数分析)
学完ES分布式集群的工作原理以及一些基本的将数据放入索引然后检索它们的所有方法,我们可以继续学习在分布式系统中,每个分片的文档是被如何索引和查询的. 路由 首先,我们需要明白,文档和分片之间是如何匹配 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- Indri中的动态文档索引技术
Indri中的动态文档索引技术 戴维 译 摘要: Indri 动态文档索引的实现技术,支持在更新索引的同时处理用户在线查询请求. 文本搜索引擎曾被设计为针对固定的文档集合进行查询,对不少应用来说,这种 ...
随机推荐
- 每天学会一点点(HashMap实现原理及源码分析)
HashMap实现原理及源码分析 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希 ...
- JS 转换日期UTC类型
前台取到的日期类型为UTC,"yyyy-MM-dd'T'HH:mm:ss.SSS",后台接收报错如下: org.springframework.http.converter.Htt ...
- Net基础篇_学习笔记_第十一天_面向对象(面向过程与面向对象的区别/类的概念)
1.面向过程-----> 面向对象 面向过程:面向的是完成这件事儿的过程,强调的是完成这件事儿的动作. 把大象塞进冰箱里1.打开冰箱门2.把大象塞进去,亲下大象的屁股3.关闭冰箱门 孙全 瘦小 ...
- 是时候让大家看看你用django写出来的博客了(内含部署教程视频)
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 博客的基础功能已经开发的差不多了,虽然还有很多地方可以完善,但我们还是希望早点把博客部 ...
- Python—字符串和常用数据结构
目录 1. 字符串 2. 列表 2.1 列表的增删改查 2.2 列表的切片和排序 2.3 生成式语法 3. 元组 4.集合 5. 字典 5.1 字典的增删改查 5.2 字典的常见操作 序言:这一章我们 ...
- 字符串之————三向字符串快速排序(Quick3string)
上一篇介绍了字符串的两种经典排序方法(LSD MSD): https://www.cnblogs.com/Unicron/p/11531111.html 下面我们来介绍一种通用的字符串排序方法——三向 ...
- git远程仓库常用命令
1. git add . 将工作区的文件推到暂存区: 2. git commit -m " 备注信息" 将暂存区内容提交 ...
- 复习0824js
编程思想: 面向过程:凡事亲力亲为,所有事情的过程都要清楚,注重的是过程. 面向对象:提出需求,找到对象,对象解决这个问题,我们要结果,注重的是结果. 面向对象的特性:封装,继承,多态: JS: 是一 ...
- MAC中Composer的使用
安装composer 安装前需确保系统PHP版本在5.3以上,在终端中执行以下命令下载Composer可执行文件: curl -sS https://getcomposer.org/installer ...
- 让tomcat使用指定JDK
一,前言 我们都知道,tomcat启动前需要配置JDK环境变量,如果没有配置JDK的环境变量,那么tomcat启动的时候就会报错,也就是无法启动. 但是在我们的工作或者学习过程中,有的时候会出现tom ...