有时候需要处理大量的数据,且这些数据又存在于excel表格内,在平时的时候,我是非常喜欢这样的数据的,因为只要是excel表格内的数据,处理起来的方法就很方便。也可能我平时遇见的数据总是以一种杂乱无章的状态呈现出来,因此只要遇见存在于某个数据库内的数据,就满心地喜欢,瞬间就有很有条理的感觉,如下:如果要处理这么几堆数据,单凭一个excel数据操作用的不怎么地的程序员来说,要想从里面获取简单直观的数据,还是不太能一下子就弄出来的。

因此,只要是天天写程序的人,就会想各种满足自己懒惰心理的办法,来发挥计算机处理数据的巨大优势的,在这里用一个简单的winform,只需要拖入两个dataview控件,就能看见需要的数据,然后导出相应的类型

其实当把这个界面做完以后,我发现我的工作实在是多余,按照别人的要求,这里的需求只是按照下面的gridview报出机票类型分别为ET等的集中PNR就可以了,不过既然都画上了,再去掉不是就浪费了去掉的时间了么,于是简单的代码就像下面这样了。

//一共是两个按钮的单击事件,第一个是读取xls文件,下面的小代码添加了很多注释
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();//首先根据打开文件对话框,选择excel表格
ofd.Filter = "表格|*.xls";//打开文件对话框筛选器
string strPath;//文件完整的路径名
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
strPath = ofd.FileName;
string strCon = "provider=microsoft.jet.oledb.4.0;data source=" + strPath + ";extended properties=excel 8.0";
//关键是红色区域
OleDbConnection Con = new OleDbConnection(strCon);//建立连接 //绑定订单信息
string strSql = "select * from[Sheet1$]";//表名的写法也应注意不同,对应的excel表为sheet1,在这里要在其后加美元符号$,
并用中括号
OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要执行的命令
OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立数据适配器
DataSet ds = new DataSet();//新建数据集
da.Fill(ds, "Orders");//把数据适配器中的数据读到数据集中的一个表中(此处表名为Orders,可以任取表名)
//指定datagridview1的数据源为数据集ds的第一张表(也就是shyman表),也可以写ds.Table["Orders"]
dataGridView1.DataSource = ds.Tables[];//数据源的绑定 //绑定订单明细信息
string strSql1 = "select * from[Sheet2$]";
OleDbCommand Cmd1 = new OleDbCommand(strSql1, Con);//建立要执行的命令
OleDbDataAdapter da1 = new OleDbDataAdapter(Cmd1);//建立数据适配器
DataSet ds1 = new DataSet();//新建数据集
da1.Fill(ds1, "Details");//把数据适配器中的数据读到数据集中的一个表中(此处表名为Orders,可以任取表名)
dataGridView2.DataSource = ds1.Tables[];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);//捕捉异常
}
}
}
//这个按钮的单击事件是根据输入到类型框中的字符串获取当前列或者行的PNR之后导出到txt文件中。
private void ExportPNR_Click(object sender, EventArgs e)
{
string fileName = @"d:\"+Type.Text+".txt";
var PNRList = new List<string>(); //生成一个big endian Unicode编码格式的文本文件 StreamWriter sw = new StreamWriter(fileName, false, Encoding.GetEncoding("GB2312"));
//你可以试试其他编码,比如Encoding.GetEncoding("GB2312")或UTF8
sw.WriteLine();
sw.WriteLine("导出的PNR类型:"+Type.Text);
sw.WriteLine();
for (int i = ; i < ; i++)
{
//var PNR = "";
//sw.WriteLine(dataGridView2.Rows[i].Cells[1].Value.ToString());
//for (int j = 0; j < dataGridView2.Rows[i].Cells.Count-1; j++)
//{
// PNR += dataGridView2.Rows[i].Cells[j].Value.ToString() + " ";
//}
////写入订单记录
//sw.WriteLine(PNR);
//sw.WriteLine("订单明细---------------开始");
////写入订单详细记录
// for (int m = 0; m < dataGridView1.Rows.Count - 1; m++)
// if (dataGridView1.Rows[m].Cells[0].Value.ToString().Trim() ==
dataGridView2.Rows[i].Cells[1].Value.ToString().Trim())
// {
// var PNR_Details = "";
// for (int n = 0; n < dataGridView1.Rows[m].Cells.Count - 1; n++)
// {
// PNR_Details += dataGridView1.Rows[m].Cells[n].Value.ToString()+" ";
// }
// sw.WriteLine(PNR_Details);
// } // sw.WriteLine("订单明细---------------结束");
//代码注释的部分,是另外一种的txt文件中的显示方式。当然不是以某个类型的名字命名的txt文件。这一段代码就同时用到了两个gridview,一个是订单表,
一个是订单明细表,两者之间是一对多的关系,本来以为要导出两个表的关系来,后来发现并不需要,于是简单的导出一个表的按某个字段简单查询的某些字段而已。
for (int j = ; j < dataGridView1.Rows[i].Cells.Count-; j++)
{
if (dataGridView1.Rows[i].Cells[j].Value != null)
{
var PNR = dataGridView1.Rows[i].Cells[].Value.ToString();
if (PNR.Contains(Type.Text))
PNRList.Add(dataGridView1.Rows[i].Cells[].Value.ToString());
}
}
}
foreach (var item in PNRList.Distinct())
{
sw.WriteLine(" " + item);
} sw.Write("\r\n");
sw.Close();
MessageBox.Show("导出数据成功,PNR位于d:\a.txt文件下!");
}

dataview将excel表格的数据导出成txt文件的更多相关文章

  1. 安卓端数据导出成txt文件

    toExport() { if (this.dataList == false) { this.$createDialog({ type: "alert", content: &q ...

  2. 把mysql的数据导出成txt

    把mysql的数据导出成txt select a from b into outfile '/sqlfile/a.txt'; my.ini里需要设置secure_file_priv = d:/sqlf ...

  3. php 读取网页源码 , 导出成txt文件, 读取xls,读取文件夹下的所有文件的文件名

    <?php // 读取网页源码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLO ...

  4. es实战之数据导出成csv文件

    从es将数据导出分两步: 查询大量数据 将数据生成文件并下载 本篇主要是将第二步,第一步在<es实战之查询大量数据>中已讲述. csv vs excel excel2003不能超过6553 ...

  5. 数据库数据导出成XML文件

    在数据库中,怎样把库中的数据导出XML文件, sql语句如下: SELECT *  FROM 表名 FOR XML AUTO, ELEMENTS

  6. Excel文档数据转成Plist文件

    有时候我们需要导入大量数据到App中静态数据,但数据又是存在Excel中,怎么办? 第一,复制数据粘贴到一个.txt文本文档中 第二,就是撸代码了 比如,我需要导入的数据表有2列字段,name和bar ...

  7. vue.js纯前端处理如何将后台返回来的csv数据导出成csv文件

    需要实现一个下载csv文件的功能,但后台没有对这个下载文件进行处理,而是将csv数据传给前台而已,需要前台做一下处理. 这是按钮的代码: <a> <el-button size=&q ...

  8. plsql 把数据导出成为 .sql文件,记住了

    今天上午,同事 提醒我.可以直接把数据导出成 .sql 文件,类似于 反编译.见下图

  9. man手册导出成txt,pdf,html的一些小技巧

    经常man一些shell命令,有时候有想导出来编辑或注释一下,所以要导出.方法有很多种,根据自己的实际需要觉得比较实用的记录下分享一下. 1.导出成txt man –t bash |col –b &g ...

随机推荐

  1. js高级选择器querySelector和querySelectorAll

    querySelector 和 querySelectorAll 方法是 W3C Selectors API规范中定义的.他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素. 目前几乎主流浏 ...

  2. FileReader对象

    在一些项目中,经常会遇到图片上传的情况,为了提高用户体验,一般会要求选择图片后 能预览一下图片. 以前的做法是 通过 ajax上传图片后,然后再显示出来,这样会产生大量的无用的图片文件,在HTML5的 ...

  3. x-requested-with 请求头 区分ajax请求还是普通请求(转)

    在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 accept  t ...

  4. phpstudy 出现“请自行检查是否安装VC9运行库??”问题 -- 缺少vc9库

    phpStudy是一款PHP调试环境的程序集成包,该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便.好用的 ...

  5. TCP3次握手和4次挥手

    为什么握手是3次,挥手是4次? 因为握手的时候,ACK+SYN可以一起发送,而4次挥手是Server端发送对Client的FIN的ACK后不一定会立即断开连接,需要将ACK和FIN分开发送 为什么TI ...

  6. MySQL之运算符与函数、自定义函数

    一自定义函数简介 (1)自定义函数定义 用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同. (2)自定义函数的两个必要条件 ...

  7. 重启php-fpm的方法

    ps -ef|grep "php-fpm: master process"|grep -v grep|awk '{print $2}'|xargs kill -USR2   优点: ...

  8. 安装软件 报错1304 C:\Program Files\Common Files\VMware\VMware VMRC Plug-in\Firefox\dbghelp.dll验证您对该目录具有访问权限

    现在情况是C:\Program Files\Common Files\VMware\VMware VMRC Plug-in\Firefox这个文件夹里面没有dbghelp.dll文件,就需要在百度上面 ...

  9. C++使用继承时子对象的内存布局

    C++使用继承时子对象的内存布局 // */ // ]]>   C++使用继承时子对象的内存布局 Table of Contents 1 示例程序 2 对象的内存布局 1 示例程序 class ...

  10. 关于Linux 下 Mysql 远程访问时出现的Access denied for user '用户名'@'IP地址' (using password:NO)

    大概是因为MySQL不允许远程访问时候不带密码吧,所以还是设定一个密码 如下这样做: 打开终端 ,即terminal的那个(RedHat5.x为例 在左上角(可能会移位)那个带着红帽的家伙点击,--- ...