2025年3月25日 星期二 甲辰(龙)年 月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > .net

c# excel工作表及cell读取

时间:04-17来源:作者:点击数:55

昨天晚上做了一回雷锋,帮朋友写了个程序,把他2天都未整理好的Excel数据,一个小时搞定。大致如下:我朋友是搞质检的,每天都会产生一个excel文件,每个excel文件都有20来个工作表,他要做的事情是把每个文件的每个工作表的其中6个单元格数据提取出来产生excel台账。悲哀的是,他要处理将近12个月的数据,累计300多个excel文件,估计他已经抓狂了。无奈,我用C#给他写了个excel工作表及cell读取的程序,因为只是他用,读取工作表的那些cell都写死了,没写成可配置。

处理如下:

1)文件夹excel文件遍历

每个月的excel文件都存放在一个目录中,如201001,因此,我要读取该目录,并遍历出该目录的所有excel文件,当然读取哪个目录,他自己指定。

2)excel工作表读取

由于每个excel文件都有10到20个工作表,因此需要遍历读取没个工作表的指定cell信息。

3)excel工作表单元格读取

4)读取到的单元格信息汇总成行输出

简单起见,每个工作表的所有cell值输出成一行,并以/t分隔开,每行结尾输出换行符/r/n,输出到文本框控件。这样我朋友只要复制文本框中的所有信息到excel即可。

5)当然为了告知当前已经处理到指定目录的哪个excel文件,添加了一个进度条

界面如下:

代码如下:

  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Text;
  • using System.Windows.Forms;
  • using System.IO;
  • using Excel;
  • using System.Reflection;
  • namespace jiangbt
  • {
  • public partial class Form1 : Form
  • {
  • public Form1()
  • {
  • InitializeComponent();
  • }
  • //文件夹设置
  • private void button1_Click(object sender, EventArgs e)
  • {
  • FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
  • if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
  • {
  • txtFolderPath.Text = folderBrowserDialog1.SelectedPath;
  • retrieveFolder();
  • }
  • folderBrowserDialog1.Dispose();
  • }
  • private void retrieveFolder()
  • {
  • string[] filename = Directory.GetFiles(txtFolderPath.Text);
  • listFiles.Items.Clear();
  • if (filename != null && filename.Length > 0)
  • {
  • for (int i = 0; i < filename.Length; i++)
  • {
  • if (filename[i].LastIndexOf(".") > 0)
  • {
  • String filetype = filename[i].Substring(filename[i].LastIndexOf(".") + 1);
  • filetype = filetype.ToLower();
  • if (filetype.Equals("xls"))
  • {
  • listFiles.Items.Add(filename[i]);
  • }
  • }
  • }
  • progressBar1.Minimum = 0;
  • progressBar1.Maximum = listFiles.Items.Count;
  • progressBar1.Value = 0;
  • }
  • }
  • private void btnExtract_Click(object sender, EventArgs e)
  • {
  • txtOutput.Text = "";
  • readExcel();
  • MessageBox.Show("提取完毕!");
  • }
  • private void readExcel()
  • {
  • ApplicationClass app = new ApplicationClass();
  • Workbook book = null;
  • Worksheet sheet = null;
  • Range range = null;
  • try
  • {
  • //遍历文件
  • for (int j = 0; j < listFiles.Items.Count; j++)
  • {
  • try
  • {
  • app.Visible = false;
  • app.ScreenUpdating = false;
  • app.DisplayAlerts = false;
  • //
  • string execPath = Path.Combine(txtFolderPath.Text, (String)listFiles.Items[j]);
  • book = app.Workbooks.Open(execPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
  • int count = book.Worksheets.Count;
  • string lineinfo = "";
  • for (int i = 1; i <= count; i++)
  • {
  • sheet = (Worksheet)book.Worksheets[i];
  • range = sheet.get_Range("A4", Missing.Value);
  • String rangevalue = (String)range.Value2;
  • rangevalue = rangevalue.Trim();
  • if ("产品批号".Equals(rangevalue))
  • {
  • //读取产品批号
  • lineinfo = "";
  • range = sheet.get_Range("B4", Missing.Value);
  • lineinfo += range.Value2 + "/t";
  • //产品规格
  • range = sheet.get_Range("D4", Missing.Value);
  • lineinfo += range.Value2 + "/t";
  • //颜色
  • range = sheet.get_Range("B5", Missing.Value);
  • lineinfo += range.Value2 + "/t";
  • //抽样日期
  • range = sheet.get_Range("B6", Missing.Value);
  • lineinfo += range.Value2 + "/r/n";
  • //
  • txtOutput.Text = txtOutput.Text + lineinfo;
  • }
  • }
  • txtOutput.Text = txtOutput.Text + "/r/n";
  • //
  • range = null;
  • sheet = null;
  • if (book != null)
  • book.Close(false, Missing.Value, Missing.Value);
  • book = null;
  • }
  • catch (Exception exp)
  • {
  • }
  • //
  • progressBar1.Value = j+1;
  • }
  • }
  • catch (Exception e)
  • {
  • MessageBox.Show(e.Message);
  • }
  • finally
  • {
  • range = null;
  • sheet = null;
  • if (book != null)
  • book.Close(false, Missing.Value, Missing.Value);
  • book = null;
  • if (app != null)
  • app.Quit();
  • app = null;
  • }
  • }
  • }
  • }

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门