关于C#对EXCEL的一些简单操作
来源:互联网 发布:微课制作软件下载 编辑:程序博客网 时间:2024/04/29 23:39
项目正好需要,学习了下,这里就介绍一种方法吧
首先需要追加一个com的dell
然后需要加代码引用
using Microsoft.Office.Interop.Excel;
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using System.Data.SqlClient;using System.Data;using Microsoft.Office.Interop.Excel;namespace Csv_to_Excel{ class Program { static void Main(string[] args) { Console.WriteLine("処理開始"); try { #region csv变换成datatable //原始文件路径 string path = @"e:\output\一覧_20150929.csv"; bool isDtHasColumn = false; StreamReader reader = new StreamReader(path, System.Text.Encoding.Default); //数据流 Microsoft.Office.Interop.Excel.Application App1 = new Microsoft.Office.Interop.Excel.Application(); App1.Visible = false; App1.DisplayAlerts = false; //模版 Workbook Book1 = App1.Workbooks.Open(@"E:\output\excel_test.xlsx"); Worksheet sheet1 = (Worksheet)Book1.Sheets[1]; Worksheet sheet2 = (Worksheet)Book1.Sheets[2]; //一覧path Workbook BookInput = App1.Workbooks.Open(@"E:\output\xxxxxxxxxx.xlsx"); Worksheet sheetInput = (Worksheet)BookInput.Sheets[1]; int InputRowCount = sheetInput.UsedRange.Rows.Count; System.Data.DataTable dt = new System.Data.DataTable(); //模版的开始写入行 int excelRow1 = 20; int excelRow2 = 21; while (!reader.EndOfStream) { string meaage = reader.ReadLine(); string[] splitResult = meaage.Split(','); //读取一行 以逗号分隔 存入数组 DataRow row = dt.NewRow(); for (int i = 0; i < splitResult.Length; i++) { if (!isDtHasColumn) //如果还没有生成列 { dt.Columns.Add("ID", typeof(string)); dt.Columns.Add("xx", typeof(string)); dt.Columns.Add("xxx", typeof(string)); dt.Columns.Add("xxx", typeof(string)); dt.Columns.Add("xxx", typeof(string)); dt.Columns.Add("xxx", typeof(string)); dt.Columns.Add("xxx", typeof(string)); dt.Columns.Add("xxxx", typeof(string)); } //row[i]= splitResult[i]; string[] sArray = splitResult[i].Split('\t'); //csv字段小于14时错误 if (sArray.Length < 14) { Console.WriteLine("error!"); Book1.Close(); BookInput.Close(); App1.Quit(); return; } //foreach (string k in sArray) //{ // Console.WriteLine(k.ToString() + "</br>"); //} row["ID"] = sArray[1]; row["xxxx"] = sArray[2]; row["xxx"] = sArray[3]; row["xxx"] = sArray[0]; row["xxx"] = sArray[8]; row["xx"] = sArray[12]; row["xxx"] = sArray[5]; row["xxx"] = ""; } dt.Rows.Add(row); isDtHasColumn = true; } //ID来排序 dt.DefaultView.Sort = "ID"; dt = dt.DefaultView.ToTable(); Console.WriteLine("datatableを生成しました!"); #endregion #region sheet生成 string kaishaID = string.Empty; string dtkaishaName = string.Empty; string inputkaishaName = string.Empty; for (int i = 0; i < dt.Rows.Count; i++) { if (i > 0 && kaishaID != dt.Rows[i]["会社ID"].ToString() || i == dt.Rows.Count - 1) { try { //追加审查者 for (int k = 0; k <= InputRowCount-3; k++) { if (sheetInput.Cells[k + 3, 2].Value == null) { sheetInput.Cells[k + 3, 2].Value = ""; } inputkaishaName = sheetInput.Cells[k + 3, 2].Value.ToString(); //if (dtkaishaName == sheetInput.Cells[k + 3, 2].Value.ToString()) if (KaishaFormat(dtkaishaName) == KaishaFormat(inputkaishaName)) { //ID sheet2.Cells[excelRow2, 1].Value = sheetInput.Cells[k + 3, 3].Value; //xxx sheet2.Cells[excelRow2, 2].Value = sheetInput.Cells[k + 3, 4].Value; //xxx sheet2.Cells[excelRow2, 3].Value = sheetInput.Cells[k + 3, 7].Value; //xxx sheet2.Cells[excelRow2, 4].Value = sheetInput.Cells[k + 3, 8].Value; //xxx sheet2.Cells[excelRow2, 5].Value = sheetInput.Cells[k + 3, 9].Value; //xxx sheet2.Cells[excelRow2, 6].Value = sheetInput.Cells[k + 3, 10].Value; //xxxx sheet2.Cells[excelRow2, 7].Value = sheetInput.Cells[k + 3, 11].Value; excelRow2++; } } //審査者時間 //生成的excel保存路径 Book1.SaveAs(@"E:\output\out\"+dtkaishaName+"xxxxx" + kaishaID + ".xlsx"); Console.WriteLine("excel" + dtkaishaName + "生成!"); //清空数据 sheet1.get_Range("A20", "F" + excelRow1).Clear(); sheet2.get_Range("A21", "G" + excelRow2).Clear(); //sheet1.Cells.Clear(); //sheet2.Cells.Clear(); //重置开始写入行 excelRow1 = 20; excelRow2 = 21; } catch (Exception ex) { Book1.Close(); BookInput.Close(); App1.Quit(); Console.WriteLine(ex.Message); } } kaishaID = dt.Rows[i]["ID"].ToString(); dtkaishaName = dt.Rows[i]["名"].ToString(); //出力excel 1,2,3,4,5,6要改 if (dt.Rows[i]["xxx"].ToString() == "xxx") { sheet1.Cells[excelRow1, 1].Value = dt.Rows[i]["ID"]; sheet1.Cells[excelRow1, 2].Value = dt.Rows[i]["xxx"]; sheet1.Cells[excelRow1, 3].Value = dt.Rows[i]["XXX"]; sheet1.Cells[excelRow1, 4].Value = dt.Rows[i]["xx"]; sheet1.Cells[excelRow1, 5].Value = dt.Rows[i]["xxx"]; sheet1.Cells[excelRow1, 6].Value = dt.Rows[i]["xxx"]; excelRow1++; } } #endregion Book1.Close(); BookInput.Close(); App1.Quit(); Console.WriteLine("処理終了!"); } catch (Exception ex) { Console.WriteLine(ex.Message); } } /// <summary> /// 名比较用 /// </summary> /// <param name="kaishaName">kaishaName</param> /// <returns>kaishaName</returns> private static string KaishaFormat(string kaishaName) { if (kaishaName.Contains("aaa")) { kaishaName = kaishaName.Replace("AAA", "aaa"); } return kaishaName; } }}
0 0
- 关于C#对EXCEL的一些简单操作
- C#对Excel的一些操作【一】
- c#对MSSQL一些简单的操作
- C#关于Excel的简单操作
- C#对excel一些基本操作
- 关于Microsoft.Office.Interop.Excel的一些简单操作
- C#对Excel的操作
- C#对Excel的操作
- C#对Excel的操作
- C# Excel简单的操作
- c# 读取写入excel单元格(包括对excel的一些基本操作)
- c# 读取写入excel单元格(包括对excel的一些基本操作)【总结篇】
- C# 关于Excel 的操作
- c# 中关于对文件的简单操作
- c# 中关于对文件的简单操作(二)
- MFC对EXCEL的一些基本操作
- ruby对excel的一些操作
- C#对Excel操作
- 关于tableViewCell 的重用若干问题
- ios之"performSelector may cause a leak because its selector is unknown"警告原因及其解决办法
- 电流环详解
- 【读书笔记】HTML5移动Web开发指南 --- 移动Web界面样式
- POJ 2299 Ultra-QuickSort(树状数组求逆序数)
- 关于C#对EXCEL的一些简单操作
- vm manager failed to contact configuration server
- Spring注解详解
- ios TableView那些事(三十 三)静态TableView隐藏其中一个cell
- 利用SQL生成xml示例
- 为什么要对测试过程进行详细记录?
- mysql 禁用和启用外键
- UIPageControl和UIScrollView的联合使用
- phpstorm常用快捷键【2】