有时候需要处理大量的数据,且这些数据又存在于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. form表单提交路径action="" 时的一种特殊情况

    一.说明: 当页面的form表达的action=""时,表示表单会提交到当前页面,但是如果当前页面的URL里已经带有一个参数了,每次提交表达时这个参数依然存在,不管form表单里有 ...

  2. deep learning on object detection

    回归工作一周,忙的头晕,看了两三篇文章,主要在写各种文档和走各种办事流程了-- 这次来写写object detection最近看的三篇文章吧.都不是最近的文章,但是是今年的文章,我也想借此让自己赶快熟 ...

  3. Mongodb 服务(windows环境下)因被强制关闭,导致服务不能启动的处理办法

    环境:windows 8操作系统下 前置条件:因操作系统原因,没有先停止mongodb服务,直接重启操作系统. 导致结果:mongodb服务无法启动,弹出框报错. Windows 无法启动MongoD ...

  4. spark 运行问题记录

    在CDH5.5.2上运行spark1.5的程序,运行起来就直接shutdown,并报出如下的异常:  INFO YarnClientSchedulerBackend: SchedulerBackend ...

  5. 面试题<初级>

    INTERVIEW .markdown-body ul pre code { background:red; font-size:40px; } @code-char:"```" ...

  6. H5学习系列之Audio和Video

    1.视频文件:音频轨道.视频轨道和一些元数据(视频封面.标题.子标题.字幕等相关信息). 2.目前H5还不支持的:流式音频和视频(H5对视频的支持只限于加载的全部媒体文件).H5的媒体收到跨域资源共享 ...

  7. android6.0锁屏界面接收新通知处理流程

    灭屏状态下,接收新信息,屏幕会半亮显示通知流程: 1,应用构造notification后,传给NotificationManager,而后进入NotificationManagerService处理. ...

  8. CSS布局技巧 -- 各种居中

    多行垂直居中 废话少说,直接上例子!!! display:table Html代码: <div class="wrapper"> <div class=" ...

  9. 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  10. 排序算法 ----(转载::http://blog.csdn.net/hguisu/article/details/7776068)

    1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序 ...