如何读取用C#excel中不规范表格中的内容? 谢谢!
例如文件a.xls中的sheet2中的表格不是严格的像数据库中的表一样,有n行m列。而是前面3行的列数跟后面的行不一样。而从第四行往后就像一张数据库表一样排列。所以我想跳...
例如文件a.xls中的sheet2中的表格不是严格的像数据库中的表一样,有n行m列。
而是前面3行的列数跟后面的行不一样。而从第四行往后就像一张数据库表一样排列。
所以我想跳过前面三行,然后从第四行往后的内容用dataset转为datatable。
请问读取数据时如何跳过前面的三行呢?
请写一个完整的例子说明
或者不用datatable这一套,如何获取第n行第m列的表格中的内容呢? 展开
而是前面3行的列数跟后面的行不一样。而从第四行往后就像一张数据库表一样排列。
所以我想跳过前面三行,然后从第四行往后的内容用dataset转为datatable。
请问读取数据时如何跳过前面的三行呢?
请写一个完整的例子说明
或者不用datatable这一套,如何获取第n行第m列的表格中的内容呢? 展开
2个回答
展开全部
C#中操作Excel的方法
关键词:C#中操作Excel的方法创建、打开、读取、写入、保存的一般性代码:
using System;
using System.Reflection; // 引用这个才能使用Missing字段
namespace CExcel1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//创建Application对象
Excel.Application xApp=new Excel.ApplicationClass();
xApp.Visible=true;
//得到WorkBook对象, 可以用两种方式之一: 下面的是打开已有的文件
Excel.Workbook xBook=xApp.Workbooks._Open(@"D:\Sample.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//xBook=xApp.Workbooks.Add(Missing.Value);//新建文件的代码
//指定要操作的Sheet,两种方式:
Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets[1];
//Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet;
//读取数据,通过Range对象
Excel.Range rng1=xSheet.get_Range("A1",Type.Missing);
Console.WriteLine(rng1.Value2);
//读取,通过Range对象,但使用不同的接口得到Range
Excel.Range rng2=(Excel.Range)xSheet.Cells[3,1];
Console.WriteLine(rng2.Value2);
//写入数据
Excel.Range rng3=xSheet.get_Range("C6",Missing.Value);
rng3.Value2="Hello";
rng3.Interior.ColorIndex=6; //设置Range的背景色
//保存方式一:保存WorkBook
xBook.SaveAs(@"D:\CData.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value);
//保存方式二:保存WorkSheet
xSheet.SaveAs(@"D:\CData2.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//保存方式三
xBook.Save();
xSheet=null;
xBook=null;
xApp.Quit(); //这一句是非常重要的,否则Excel对象不能从内存中退出
xApp=null;
}
}
}
希望对你有所帮助呀
关键词:C#中操作Excel的方法创建、打开、读取、写入、保存的一般性代码:
using System;
using System.Reflection; // 引用这个才能使用Missing字段
namespace CExcel1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
//创建Application对象
Excel.Application xApp=new Excel.ApplicationClass();
xApp.Visible=true;
//得到WorkBook对象, 可以用两种方式之一: 下面的是打开已有的文件
Excel.Workbook xBook=xApp.Workbooks._Open(@"D:\Sample.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//xBook=xApp.Workbooks.Add(Missing.Value);//新建文件的代码
//指定要操作的Sheet,两种方式:
Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets[1];
//Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet;
//读取数据,通过Range对象
Excel.Range rng1=xSheet.get_Range("A1",Type.Missing);
Console.WriteLine(rng1.Value2);
//读取,通过Range对象,但使用不同的接口得到Range
Excel.Range rng2=(Excel.Range)xSheet.Cells[3,1];
Console.WriteLine(rng2.Value2);
//写入数据
Excel.Range rng3=xSheet.get_Range("C6",Missing.Value);
rng3.Value2="Hello";
rng3.Interior.ColorIndex=6; //设置Range的背景色
//保存方式一:保存WorkBook
xBook.SaveAs(@"D:\CData.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value);
//保存方式二:保存WorkSheet
xSheet.SaveAs(@"D:\CData2.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//保存方式三
xBook.Save();
xSheet=null;
xBook=null;
xApp.Quit(); //这一句是非常重要的,否则Excel对象不能从内存中退出
xApp=null;
}
}
}
希望对你有所帮助呀
展开全部
假设有两个表,一个表名为表1,一个表名为表2,在表1中A1:J16中是原始数据,其中A1:C16就是你据说的不规范数据,现在想在表2中出现把表1中数据去除A至C列的效果,我试着编了个函数,你看这样行不行。
在表2中A1单元格中输入“=IF(OFFSET(表1!$A$1:$J$16,ROW()-1,COLUMN()+2,1,1)="","",OFFSET(表1!$A$1:$J$16,ROW()-1,COLUMN()+2,1,1))”
输入后回车,用自动填充柄往右拖,拖到G列为止,再直接往下拖,拖到16行为止,就可以出现这个效果了。
其中的OFFSET函数是一个查询与引用函数,返回一个位置偏移。
在表2中A1单元格中输入“=IF(OFFSET(表1!$A$1:$J$16,ROW()-1,COLUMN()+2,1,1)="","",OFFSET(表1!$A$1:$J$16,ROW()-1,COLUMN()+2,1,1))”
输入后回车,用自动填充柄往右拖,拖到G列为止,再直接往下拖,拖到16行为止,就可以出现这个效果了。
其中的OFFSET函数是一个查询与引用函数,返回一个位置偏移。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询