当前位置:  编程技术>.net/c#/asp.net

C#转换EXCEL到TXT文档的方法介绍

    来源: 互联网  发布时间:2014-08-30

    本文导语:  excel数据格式如下: 设备名称 规格型号 设备编号 使用部门 固定资产编号 电脑1 IBM5660 10001 管理部 100010001 电脑2 IBM5661 10002 研发部 100010002 电脑3 IBM5662 10003 管理部 100010003 要求转换到TXT文档的格式: "检测设备资产标签","设备名...

excel数据格式如下:
设备名称 规格型号 设备编号 使用部门 固定资产编号
电脑1 IBM5660 10001 管理部 100010001
电脑2 IBM5661 10002 研发部 100010002
电脑3 IBM5662 10003 管理部 100010003

要求转换到TXT文档的格式:
"检测设备资产标签","设备名称","电脑1","规格型号","IBM5660","设备编号","10001","使用部门","管理部","固定资产编号","100010001"
"检测设备资产标签","设备名称","电脑2","规格型号","IBM5661","设备编号","10002","使用部门","研发部","固定资产编号","100010002"
"检测设备资产标签","设备名称","电脑3","规格型号","IBM5662","设备编号","10003","使用部门","管理部","固定资产编号","100010003"
end

1、页面文件代码
 

代码如下:

namespace ExcelToTxt
{
partial class Form1
{
///
/// 必需的设计器变量。
///
private System.ComponentModel.IContainer components = null;

///
/// 清理所有正在使用的资源。
///
/// 如果应释放托管资源,为 true;否则为 false。
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows 窗体设计器生成的代码

///
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
///
private void InitializeComponent()
{
this.dgvShow = new System.Windows.Forms.DataGridView();
this.btnSelect = new System.Windows.Forms.Button();
this.btnChange = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dgvShow)).BeginInit();
this.SuspendLayout();
//
// dgvShow
//
this.dgvShow.AllowUserToAddRows = false;
this.dgvShow.AllowUserToDeleteRows = false;
this.dgvShow.AllowUserToResizeRows = false;
this.dgvShow.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvShow.Dock = System.Windows.Forms.DockStyle.Top;
this.dgvShow.Location = new System.Drawing.Point(0, 0);
this.dgvShow.Name = "dgvShow";
this.dgvShow.RowTemplate.Height = 23;
this.dgvShow.Size = new System.Drawing.Size(885, 600);
this.dgvShow.TabIndex = 0;
//
// btnSelect
//
this.btnSelect.Location = new System.Drawing.Point(202, 611);
this.btnSelect.Name = "btnSelect";
this.btnSelect.Size = new System.Drawing.Size(148, 23);
this.btnSelect.TabIndex = 1;
this.btnSelect.Text = "选择excel文件";
this.btnSelect.UseVisualStyleBackColor = true;
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
//
// btnChange
//
this.btnChange.Location = new System.Drawing.Point(403, 611);
this.btnChange.Name = "btnChange";
this.btnChange.Size = new System.Drawing.Size(152, 23);
this.btnChange.TabIndex = 2;
this.btnChange.Text = "转换为txt文档";
this.btnChange.UseVisualStyleBackColor = true;
this.btnChange.Click += new System.EventHandler(this.btnChange_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(885, 646);
this.Controls.Add(this.btnChange);
this.Controls.Add(this.btnSelect);
this.Controls.Add(this.dgvShow);
this.Name = "Form1";
this.Text = "文件转换";
((System.ComponentModel.ISupportInitialize)(this.dgvShow)).EndInit();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.DataGridView dgvShow;
private System.Windows.Forms.Button btnSelect;
private System.Windows.Forms.Button btnChange;
}
}

2、C#数据转换代码:
 

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace ExcelToTxt
{
public partial class Form1 : Form
{
private DataTable dt; //存储EXCLE中的数据

public Form1()
{
InitializeComponent();
this.btnChange.Enabled = false;//初始化设置控件为不可用
}

///
/// 该方法打开一个Excel文件
///
///
///
private void btnSelect_Click(object sender, EventArgs e)
{
string excelFilePath = ""; //存储打开的文件的路径

OpenFileDialog selectFile = new OpenFileDialog();

//选择打开的文件设置
selectFile.Filter = "Excel(*.xls)|*.xls";
selectFile.FilterIndex = 1;
selectFile.DefaultExt = "xls";
selectFile.AddExtension = true;
selectFile.RestoreDirectory = true;
selectFile.Multiselect = false;

//选择文件
if (selectFile.ShowDialog() == DialogResult.OK)
{
excelFilePath = selectFile.FileName;//获取选择的文件路径
}
else
{
return;
}

//得到控件的数据源
dt = GetExcelData(excelFilePath);

//在显示控件中显示数据
ShowDataGridView();

//设置转换格式的控件可用
this.btnChange.Enabled = true;
}

///
///该方法将选择的EXCEL文件转换成TXT文档
///
///
///
private void btnChange_Click(object sender, EventArgs e)
{
string txtFilePath = "";//存储选择的TXT文档的文件名
SaveFileDialog saveTxtFile = new SaveFileDialog();

//选择保存的文件设置
saveTxtFile.Filter = "Text(.txt)|*.txt";
saveTxtFile.FilterIndex = 1;
saveTxtFile.DefaultExt = "txt";
saveTxtFile.AddExtension = true;
saveTxtFile.RestoreDirectory = true;
saveTxtFile.OverwritePrompt = true;

//选择创建文件的文件夹
if (saveTxtFile.ShowDialog() == DialogResult.OK)
{
txtFilePath = saveTxtFile.FileName; //获取选择的文件路径
}
else
{
return;
}

//将DataTable中的文件写入到txt文档中
Cursor.Current = Cursors.WaitCursor; //设置鼠标状态
int dtcols = dt.Columns.Count;
StringBuilder sbtxtdata = new StringBuilder(); ; //临时存储从dt中读出的每一条数据

//先创建一个新的TXT文档
FileStream fsTxtFile = new FileStream(txtFilePath, FileMode.CreateNew, FileAccess.Write);
StreamWriter swTxtFile = new StreamWriter(fsTxtFile, Encoding.GetEncoding("gb2312") );

if (dtcols > 3)
{
string[] tempstr = new string[11];

//设置固定的值
tempstr[0] = """ + "检测设备资产标签" + """ + ",";
tempstr[1] = """ + "设备名称" + """ + ",";
tempstr[3] = """ + "规格型号" + """ + ",";
tempstr[5] = """ + "设备编号" + """ + ",";
tempstr[7] = """ + "使用部门" + """ + ",";
tempstr[9] = """ + "固定资产编号" + """ + ",";

//标签2的格式写入Txt文档
for(int rows = 0; rows < dt.Rows.Count; rows++)
{
for (int cols = 0; cols < dt.Columns.Count; cols++)
{
int tempindex = 2*(cols+1);
tempstr[tempindex] = """ + dt.Rows[rows][cols].ToString() + """;
}

tempstr[2] = tempstr[2] + ",";
tempstr[4] = tempstr[4] + ",";
tempstr[6] = tempstr[6] + ",";
tempstr[8] = tempstr[8] + ",";
tempstr[10] = tempstr[10] + "rn";

//将本行数据写入缓冲区
foreach (string str in tempstr)
{
sbtxtdata.Append(str);
}
swTxtFile.Write(sbtxtdata);

//清空本行中的数据
sbtxtdata.Remove(0, sbtxtdata.Length);

//将数组中新添加的数据清空
for (int i = 0; i < dt.Columns.Count; i++)
{
int tempindex = 2*(i+1);
tempstr[tempindex] = "";
}
}
}
else
{
string[] tempstr = new string[5];
//标签0或1的格式写入Txt文档
for (int rows = 0; rows < dt.Rows.Count; rows++)
{
for (int cols = 0; cols < dt.Columns.Count; cols++)
{
string temp = "";//临时存储当前时间

if (cols == 0)
{
tempstr[0] = """ + dt.Rows[rows][cols] + """ + ",";
}
else if (cols == 1)
{
temp = dt.Rows[rows][cols].ToString();
tempstr[1] = """ + temp.Substring(0, 4) + """ + ","; //截取年
tempstr[2] = """ + temp.Substring(4, 2) + """ + ","; //截取月
tempstr[3] = """ + temp.Substring(6, 2) + """ + ","; //截取日
}
else if (cols == 2)
{
tempstr[4] = """ + dt.Rows[rows][cols] + """ + "rn";
}
}

//将本行数据写入缓冲区
foreach (string str in tempstr)
{
sbtxtdata.Append(str);
}
swTxtFile.Write(sbtxtdata);

//清空本行中的数据
sbtxtdata.Remove(0, sbtxtdata.Length);

//将数组中新添加的数据清空
for (int i = 0; i < dt.Columns.Count; i++)
{
tempstr[i] = "";
}
}
}

//将数据写入文档
swTxtFile.Write("end");
swTxtFile.Flush();
swTxtFile.Close();
fsTxtFile.Close();

//重新设置鼠标格式
Cursor.Current = Cursors.Default;
MessageBox.Show("文件转换成功!", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}

///
/// 获取Excel文件中的数据
///
/// Excel文件的路径
/// DataTable:将Excel文件的数据加载到DataTable中
private DataTable GetExcelData(string path)
{
//连接字符串确定
string excelstr = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source= " + path + " ;"
+ " Extended Properties = Excel 8.0;";

OleDbConnection excelConn = new OleDbConnection(excelstr);

//打开数据源连接
try
{
if (excelConn.State == ConnectionState.Closed)
{
excelConn.Open();
}
}
catch (Exception ex)
{
MessageBox.Show("打开数据源连接失败!", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
finally
{
if(excelConn.State == ConnectionState.Open)
excelConn.Close();
}

//设置查询命令
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelConn);
DataSet ds = new DataSet();

//执行该查询EXCEL表的命令
try
{
myCommand.Fill(ds, "excelTable");
}
catch (Exception ex)
{
MessageBox.Show("该Excel文件的工作表的名字不是[Sheet1$]!", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
finally
{
if (excelConn.State == ConnectionState.Closed)
{
excelConn.Close();
}
}

//判断DataTable中是否有数据
if (ds.Tables["excelTable"].Rows.Count > 0)
{
return ds.Tables["excelTable"];
}
else
{
MessageBox.Show("没有读到Excel表中的数据!", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}


///
/// 将选择的excel表中的数据现在DataGridView中
///
private void ShowDataGridView()
{
//设置显示控件的样式
this.dgvShow.DefaultCellStyle.BackColor = Color.Beige;
this.dgvShow.DefaultCellStyle.Font = new Font("Tahoma", 12);

DataGridViewCellStyle highlightCellStyle = new DataGridViewCellStyle();
highlightCellStyle.BackColor = Color.Red;

DataGridViewCellStyle currencyCellStyle = new DataGridViewCellStyle();
currencyCellStyle.Format = "C";
currencyCellStyle.ForeColor = Color.Green;

//设置显示控件的数据源
dgvShow.DataSource = dt;
}
}
}


    
 
 

您可能感兴趣的文章:

  • c# 类型转换
  • C# char类型字符转换大小写的实现代码
  • C#实现将千分位字符串转换成数字的方法
  • C#实体类转换成Json字符串的实现代码
  • C#中把英文字母转换为大写或小写的方法
  • C#中把字符串String转换为整型Int的小例子
  • 如何实现C#自定义结构的强制转换
  • 将ocx文件转换成C#程序引用的DLL文件的办法
  • C# 图片与二进制转换的简单实例
  • C#中将字符串转换为整型的三种解决方法总结
  • C#中怎么将一个List转换为只读的
  • c#将list类型转换成DataTable方法示例
  • C#中使用强制类型实现字符串和ASCII码之间的转换
  • C# .net实现货币转换示例
  • 教你如何用C#制作文字转换成声音程序
  • c#实现图片与字节流相互转换的代码
  • C# 将字节流转换为图片的实例方法
  • C#难点逐个击破(9):类型转换
  • C# IP地址与整数相互转换的实现方法
  • C# DataTable 转换为 实体类对象实例
  • 高手请进!请教java把TXT或XML或PDF格式的文档转换成word格式文档的问题
  • Word文档转换工具 Docvert
  • java DocConverter.jar转换word文档到pdf 中文乱码问题
  • 文档格式转换工具 SILVERCODERS Doc ToText
  • HTML到PDF的文档转换 wkhtmltopdf
  • 文档转换查看器 Viewer
  • markdown 文档转换工具 parm
  • OpenDocument文档转换器 JODConverter
  • 文档转换工具 pdf2djvu
  • 如何在Java简单的实现各种文档格式的转换
  • PDF文档转换工具 pdfFactory
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • php时区转换转换函数
  • Linux c字符串中不可打印字符转换成16进制
  • 字符串如何转换为整数,如"12345"(是字符串)转换为12345
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • 怎么将一个字符串类型转换为整型,比如说将“123”转换为123
  • Python将日期时间按照格式转换成字符串
  • 哪位大哥大姐知道结果集中的日期类数据在输出显示时应转换为什么类型的数据,怎么转换?
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换
  • C语言中自动隐式转换与类型强制转换实例分析
  • 对TCP协议状态及状态转换理解
  • 请问能否把任何类型数据转换为一种类型,然后从这种类型又转换回去?例如:int>>Object Object>>int
  • PHP实现Unicode和Utf-8互相转换
  • java中如何将ascII 码转换成字符以及将字符转换成ascII码? 在线等待加分!
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • 如何将String转换为InputStream,如何将InputStream转换为String(高手请进)
  • php将html特殊字符转换成html字符串的函数:htmlspecialchars()介绍及代码举例
  • 如何实现float 到 int 的类型转换,string 到 int 的类型转换?
  • 标准c++四种强制类型转换方式介绍
  • windows 和linux 之间的文本文件转换 c和c++文件 批量转换
  • php将unix时间戳转换成字符串时间函数(date)
  • 如何实现mbcs转换unicode,unicode转换成utf8


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3