本文章介绍基于VS2010 Winform 的WPS2016二次开发 ET数据读取程序 本程序支持多个Sheet页面

前提:引用WPS安装目录下的etapi.dll

private void button2_Click(object sender, EventArgs e)
{
//初始化表头
List<string[]> columnTextsList = new List<string[]>();
string[] strColumnTexts1 = { "企业名称", "企业类型" };
string[] strColumnTexts2 = { "产品编码", "产品名称", "产品类别" };
columnTextsList.Add(strColumnTexts1);
columnTextsList.Add(strColumnTexts2);

OpenFileDialog fileDialog = new OpenFileDialog();
(*.txt)|*.txt|
fileDialog.Filter = "(*.et)|*.et";
fileDialog.FilterIndex = 1;
fileDialog.RestoreDirectory = true;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
List<ClinetUtil> clientList = new List<ClinetUtil>();
ExcelToDataSet(fileDialog.FileName, columnTextsList, new Action<string, DataSet>(delegate(string msg, DataSet ds)
{
if (ds != null && ds.Tables.Count > 0)
{
dgv1.DataSource = ds.Tables[0];
if (ds.Tables.Count > 1)
{
dgv2.DataSource = ds.Tables[1];
}
}
else
{
MessageBox.Show(msg);
}
}));
}
}

/// <summary>
/// 读取et表格数据转换成dataSet
/// </summary>
/// <param name="fileName">et表格全路径</param>
/// <param name="columnTextsList">规定的表头列表(支持多sheet)</param>
/// <param name="callback">回调函数</param>
private void ExcelToDataSet(string fileName, List<string[]> columnTextsList, System.Action<string, DataSet> callback)
{
/*
说明:
* 1.Excel读取的顺位从1开始,而不是从0开始
* 2.Excel.Application 当系统中同时安装Excel和et 时则启动Excel.exe ;若只存在et 时,则启动et.exe
*
*/
string msg = "";
List<string> headerList = new List<string>();
DataSet dataSet = new DataSet();

Excel.Application appli = new Excel.Application();
try
{
//读取Excel
Excel._Workbook wk = appli.Workbooks.Open(fileName);
//读取sheet
int sheetsCount = wk.Worksheets.Count;//获取sheet数量
if (sheetsCount <= 0)
{
appli.Workbooks.Close();
appli.Quit();
callback(msg, dataSet);
}

if (columnTextsList.Count > sheetsCount)
{
msg = string.Format("导入表格的sheet数量不符合要求!");
appli.Workbooks.Close();
appli.Quit();
callback(msg, dataSet);
return;
}

//遍历每一个sheet页面
for (int k = 1; k <= sheetsCount; k++)
{
//如果sheet页面的数量大于规定的数量 跳出方法
if (k > columnTextsList.Count) break;

DataTable dt = new DataTable();
Excel.Worksheet sheet = wk.Worksheets.get_Item(k);
Excel.Range range = sheet.UsedRange;

int rowCount = range.Rows.Count;//获取行数
int columCount = range.Columns.Count;//获取列数

//设置列头
for (int j = 1; j <= columCount; j++)
{
dt.Columns.Add(((Excel.Range)range.get_Item(1, j)).Text);
}

//验证Excel中的列是否缺失
for (int i = 0; i < columnTextsList[k - 1].Length; i++)
{
if (!dt.Columns.Contains(columnTextsList[k - 1][i]))
{
msg = string.Format("要导入的文件第\"{0}\"个sheet页面缺少\"{1}\"列,请使用正确的模板!", k, columnTextsList[k - 1][i].Trim());
appli.Workbooks.Close();
appli.Quit();
callback(msg, dataSet);
return;
}
}

for (int i = 2; i <= rowCount; i++)
{
DataRow datarow = dt.NewRow();
for (int j = 1; j <= columCount; j++)
{
string title = ((Excel.Range)range.get_Item(j)).Text;
datarow[title] = range.get_Item(i, j).Text;
}
dt.Rows.Add(datarow);
}
dataSet.Tables.Add(dt);
}

//关闭相关程序
appli.Workbooks.Close();
appli.Quit();
callback(msg, dataSet);
}
catch (Exception ex)
{
appli.Workbooks.Close();
appli.Quit();
callback(msg, dataSet);
return;
}
}

转载于:https://www.cnblogs.com/lsmhome/p/9323899.html

C# 导入(读取) WPS ET文件相关推荐

  1. java 读取project_java 导入读取.mpp project文件(甘特图)

    写这个的思路是:将.mpp文件中的内容读取出来,我只需要他的一级和二级目录,一级目录.二级目录各一张表,二级目录表存一级目录的主键id,这点和网上其他的方法不太一样,大多数都是一张表就完事的,因为表不 ...

  2. python读取wps表格文件显示到动态页面中_Python实现读取txt文件并转换为excel的方法示例...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. xml文件导入wps_#WPS表格怎么导入XML数据?#excel怎样导入wps表格数据

    WPS表格怎么导入XML数据? 他们说的都不对还,WPS发展到现Office好用多了,不用像Office那样需要XML映射,直xml拖拽到WPS表格里选择表开即可 PS:有的人之直接拖拽过来还是不行是 ...

  4. R—读取数据(导入csv,txt,excel文件)

    R-读取数据(导入csv,txt,excel文件) 转自:http://www.cnblogs.com/zhangduo/p/4440314.html 导入CSV.TXT文件 read.table函数 ...

  5. java使用poi(XSSFWorkbook)读取excel(.xlsx)文件

    其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx 这里介绍的使用poi方式(XSSFWorkbook),实际上poi提供了HSSFWorkbook和XSSFWorkbook两个实现类 ...

  6. python在读写文件之前需要创建文件对象-python读取或写入文件

    一.创建并读取文本文件 1.该方法需要关闭filereader对象 #!/usr/bin/env python3#读取文件 input_file = "F://python入门//文件//一 ...

  7. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  8. python读取所有txt文件_python如何批量读取txt文件

    python批量读取txt文件的方法:首先导入系统模块:然后将文件夹路径更改为需要批量读取的txt文件存放的路径:再调用系统模块得到该文件夹下的所有文件名称:最后遍历文件夹,读取txt文件. 如果文件 ...

  9. php excel批量导入,PHP将excel文件中的数据批量导入到数据库中

    这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插入到数据表中.当然,前提是用户给我们的excel表格中的信息必须和我们表中 ...

  10. python xlrd读取excel-使用Python xlrd模块读取Excel格式文件的方法

    这是一篇关于如何使用Python xlrd模块读取Excel格式文件的方法的文章,下面的python代码中使用 了xlrd模块的方法,这样就能够很方便的读取 excel 文件内容.同是这个xlrd模块 ...

最新文章

  1. 从观望到行动:全球工业物联网市场生态全景观察
  2. lighttpd配置支持https
  3. Linux磁盘管理----分区格式化挂载fdisk、mkfs、mount
  4. Day14:使用斯坦福 NER 软件包实现你自己的命名实体识别器
  5. 全球及中国生物降解塑料行业应用需求前景及竞争态势研究报告2021版
  6. 万能的Seq2Seq:基于Seq2Seq的阅读理解问答
  7. Caffe 编译错误记录
  8. Ubuntu 下 apt-get 命令
  9. mysql8安装后初始化密码
  10. tcp/ip ---数据封装过程
  11. 新的学期、新的开始、新的付出、新的收获!
  12. python导入sas数据集_运用import过程进行SAS数据导入完全实用教程
  13. java 实现websocket的两种方式
  14. 图片轮播插件-carouFredSel
  15. 计算机图形学----投影矩阵
  16. java 铬钼钢_自行车基本知识讲座
  17. 开关电源共模电感和X电容的选取?
  18. 参考《机器学习实战》高清中文PDF+高清英文PDF+源代码
  19. 转载:国学与古代文学的关系
  20. EOS核心特点是什么?

热门文章

  1. 如何利用长尾关键词挖掘推广旅游业
  2. python实现局域网攻击_牛逼了!一行Python代码搭建一个局域网服务器
  3. 【Excel VBA】VBE
  4. 32位计算机百度盘,【安装包】正版office_2010(win7专用【32位】)
  5. Oracle数据库安装容易出错问题的解决方案
  6. 学会这个方法,tf卡数据恢复非难事!
  7. 映美Jolimark CFP-535W 打印机驱动
  8. java syslog-ng_syslog-ng详细安装配置
  9. 大豆技术面分析_大豆高产栽培关键技术分析,简单、明了轻松学会
  10. 设计一个彩灯循环控制器