c#读取excel文件的几种方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C# 读取EXCEL文件的几种经典方法
例子引入(读取时excel要打开)
namespace读取excel测试
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
所有文//读取方法
public DataSet returndb(string path)
{
string strConn = ".4.0;" + "Data Source=" + path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new
OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, "table1");
return ds;
//另一种写法
= new //{
// throw ex;
//}
}
}
}
1.方法一:采用OleDB读取EXCEL文件:
把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:
public DataSet ExcelToDS(string Path)
{
string strConn = ".4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
.OleDbCommandBuilder builder=new OleDbCommandBuilder(myCommand);
//QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。
builder.QuotePrefix="["; //获取insert语句中保留字符(起始位置)builder.QuoteSuffix="]"; //获取insert语句中保留字符(结束位置)
DataSet newds=new DataSet();
myCommand.Fill(newds ,"Table1") ;
for(int i=0;i<oldds.Tables[0].Rows.Count;i++)
{
//在这里不能使用ImportRow方法将一行导入到news中,因为ImportRow将保留原来DataRow的所有设置(DataRowState状态不变)。
在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的DataRowState!=Added
DataRow nrow=aDataSet.Tables["Table1"].NewRow();
for(int j=0;j<newds.Tables[0].Columns.Count;j++)
{
nrow[j]=oldds.Tables[0].Rows[i][j];
}
安装
missing,
missing, missing, missing, true, missing, missing, missing, missing, missing);
//取得第一个工作薄
Worksheet ws = (Worksheet)Item(1);
//取得总记录行数 (包括标题列)
int rowsint = ; //得到行数
//int columnsint = ;//得到列数
//取得数据范围区域 (不包括标题列)
Range rng1 = Range("B2", "B" + rowsint); //item
Range rng2 = Range("K2", "K" + rowsint); //Customer
object[,] arryItem= (object[,])rng1.Value2; //get range's value object[,] arryCus = (object[,])rng2.Value2;
//将新值赋给一个数组
string[,] arry = new string[rowsint-1, 2];
for (int i = 1; i <= rowsint-1; i++)
{
//Item_Code列
string s = Console.ReadLine();
while (str != null)
{ str = sr.ReadLine();
string[] xu = new String[2];
xu = str.Split(',');
string ser = xu[0];
string dse = xu[1];
if (ser == s)
{
Console.WriteLine(dse);
break;
}
}
sr.Close();
另外也可以将数据库数据导入到一个txt文件,实例如下:
//txt文件名
string fn = ("yyyyMMddHHmmss") + "-" + "PO014" + ".txt";
OleDbConnection con = new OleDbConnection(conStr);
读取数据
//
//{
//}
{
str1 = dr[1].ToString();
str2 = dr[2].ToString();
str3 = dr[3].ToString();
str4 = dr[4].ToString().Trim();
strmWriter.Write(str0);
strmWriter.Write(str);
strmWriter.Write(str1);
strmWriter.Write(str);
strmWriter.Write(str2);
strmWriter.Write(str);
strmWriter.Write(str3);
strmWriter.WriteLine(); //换行
}
strmWriter.Flush();
strmWriter.Close();
if (con.State == ConnectionState.Open) {
con.Close();
}。