您的位置:首页 > 编程语言 > C#

C#把txt的数据导入excel,用逗号分隔

2016-03-03 02:56 519 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;
using System.Diagnostics;
using System.Threading;

namespace xiaoli
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

OpenFileDialog ofdTxt = new OpenFileDialog();
OpenFileDialog ofdExcel = new OpenFileDialog();
string pathTxt = null; //txt文档路径
string pathExcel = null; //excel文件路径
List listTxt = new List(); //用于储存读取的文本文件
Thread th;

private void button1_Click(object sender, EventArgs e)
{
try
{
ofdTxt.Title = "请选择要打开的文本文件";
ofdTxt.Multiselect = false;
ofdTxt.Filter = "文本文件|*.txt|所有文件|*.*";
ofdTxt.ShowDialog();
if (ofdTxt.FileName.ToString() == "" || ofdTxt.FileName.ToString() == null)
{
MessageBox.Show("没有选择文件");
return;
}
label1.Text = ofdTxt.FileName.ToString();
pathTxt = ofdTxt.FileName.ToString();
string[] strs = File.ReadAllLines(pathTxt, Encoding.Default);
foreach (var item in strs)
{
listTxt.Add(item);
}
}
catch
{
MessageBox.Show("选择txt部分出错");
}
}

private void button1_Click_1(object sender, EventArgs e)
{
try
{
ofdExcel.Title = "请选择微软Excel文件";
ofdExcel.Multiselect = false;
ofdExcel.ShowDialog();
label2.Text = ofdExcel.FileName.ToString();
pathExcel = ofdExcel.FileName.ToString();
}
catch
{
MessageBox.Show("选择excel部分出错");
}
}

int colNum = 1;

private void button2_Click(object sender, EventArgs e)
{
//用新线程来导入
try
{
try
{
colNum = int.Parse(tbColNum.Text.ToString());
}
catch
{
tbColNum.Text = "1";
}
th = new Thread(ImportExcel);
th.IsBackground = true;
th.Start();

}
catch
{
MessageBox.Show("导入出错");
}
}

///
///  点击导入到excel的方法
///
private void ImportExcel()
{
//try
//{
label5.Text = "请稍等...";
//MessageBox.Show(pathTxt);
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Workbooks wbks = app.Workbooks;
_Workbook _wbk = wbks.Add(pathExcel);
object miss = Missing.Value;
//取得,删除或者添加sheet
Sheets shs = _wbk.Sheets;
//取得
_Worksheet _wsh = (_Worksheet)shs.get_Item(1);
// _wsh.Name = "xiaoli2";  修改表名
//读取txt几行就循环几次
for (int i = 0; i < listTxt.Count; i++)
{
//把txt中的每一行用","号分隔成string数组
string[] strNew = listTxt[i].Split(new char[] { ',', ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
//行  新建行
((Range)_wsh.Rows[1, Missing.Value]).Insert(Missing.Value, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);
//设置列格式
Range myrange = _wsh.Range[_wsh.Cells[1, colNum], _wsh.Cells[1, colNum]];
myrange.NumberFormatLocal = "@";//文本格式
//设置单元格宽度
//myrange.ColumnWidth = 20;
//单元格   向单元格中写入数据   循环写入行中的每一个单元格
for (int j = 0; j < strNew.Length; j++)
{
_wsh.Cells[1, j + 1] = strNew[j];
}
}
//输出内容
//string temp = ((Range)_wsh.Cells[4, 1]).Text.ToString();
//Console.WriteLine(temp);
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
_wbk.SaveAs(pathExcel, miss, miss, miss, miss, miss, XlSaveAsAccessMode.xlNoChange, miss, miss, miss, miss, miss);
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null;
GC.Collect();
label5.Text = "导入成功,You're Pig!";
th.Abort();
//}
//catch
//{
//    MessageBox.Show("excel部分出错");
//}
}

private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  excel c# 数据