通过OleDb连接,读取Excel。
Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'
特别注意:
Extended Properties='Excel 8.0;HDR=yes;IMEX=1'
A:HDR ( HeaDer Row ) 默认值YES。
HDR=Yes表示第一行是标题,不做为数据使用;当HDR=NO,则表示第一行不是标题,做为数据来使用。
B:IMEX ( IMport EXport mode )
IMEX 有三种模式,各自引起的读写行为也不同,容後再述:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
IMEX=1 解决数字与字符混合时,识别不正常的情况。
当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
C:Excel 8.0
对于Excel 97以上版本都用Excel 8.0
// 导入收款单数据
protected void Button2_Click(object sender, EventArgs e)
{
try{
string path = "D:\\Work\\核销记录20121116\\";
string[] names = new string[]{
//"天津 期初数据格式(核销记录).xlsx"
"浙江大区债权数据(核销记录).xlsx"
};
for (int i = 0; i < names.Length;i++ )
{
readExcel(path, names[i]);
}
// 操作数据库
insertDB();
}
catch (Exception ex)
{
string Script = CommonBLL.getRedirectErrorPageScript("ZJ0000", Server.UrlEncode(Request.RawUrl.ToString()), ex);
Response.Write(Script);
Response.End();
}
}
private void readExcel(string path, string name)
{
object missing = Missing.Value;
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Workbooks.Open(path + name, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
for (int index = 0; index < excelApp.Workbooks[1].Worksheets.Count; index++)
{
//只导第一个Sheet
if(index > 0){
break;
}
//取得每个Sheet名
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Workbooks[1].Worksheets[index + 1];
string sSheetName = ws.Name;
DataSet ds = ExecleDs(path + name, sSheetName);
DataTable dt = ds.Tables["Execl"];
for (int i = 0; i < dt.Rows.Count; i++)
{
if (String.IsNullOrEmpty(dt.Rows[i]["整机机号"].ToString()))
{
continue;
}
//收款单号
iDocumentNo++;
string receiptDocumentNo = "SK" + iDocumentNo;
aList.Add(getInsertReceiptDocument(dt.Rows[i], receiptDocumentNo, name));
}
}
}
private DataSet ExecleDs(string filenameurl,string sheet)
{
OleDbConnection OleCon = new OleDbConnection();
OleDbCommand OleCmd = new OleDbCommand();
OleDbDataAdapter OleDa = new OleDbDataAdapter();
DataSet Myds = new DataSet();
OleCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filenameurl + ";Extended Properties=Excel 12.0;";
OleCon.Open();
OleCmd.CommandText = "select * from ["+sheet+"$]";
OleCmd.Connection = OleCon;
OleDa.SelectCommand = OleCmd;
OleDa.Fill(Myds, "Execl");
OleCon.Close();
OleCmd.Dispose();
OleDa.Dispose();
OleCon.Dispose();
return Myds;
}
private ReceiptDocumentModel getInsertReceiptDocument(DataRow dr, string receiptDocumentNo, string fileName)
{
ReceiptDocumentModel receiptDocumentModel = new ReceiptDocumentModel();
receiptDocumentModel.Receipt_document_no = receiptDocumentNo;
switch (fileName.Substring(0, 2))
{
case "天津":
receiptDocumentModel.Business_area = "B0002";
break;
case "浙江":
receiptDocumentModel.Business_area = "C0003";
break;
}
receiptDocumentModel.Machine_no = dr["整机机号"].ToString();
receiptDocumentModel.Receipt_status = "DL119001";
receiptDocumentModel.Receipt_amount = CommonBLL.converTextToAmount(dr["核销金额"].ToString());
receiptDocumentModel.Receipt_verificated_amount = 0;
receiptDocumentModel.Receipt_refund_amount = 0;
receiptDocumentModel.Receipt_balance = CommonBLL.converTextToAmount(dr["核销金额"].ToString());
receiptDocumentModel.Receipted_date = DateTime.Parse(dr["核销日期"].ToString()).ToString("yyyy-MM-dd");
receiptDocumentModel.Creater = "admin";
receiptDocumentModel.Last_modify_date = DateTime.Today.ToString("yyyy-MM-dd");
receiptDocumentModel.Remark = dr["销售合同号"].ToString();
return receiptDocumentModel;
}
// 操作数据库
private void insertDB(){
object[] insertObject = new object[aList.Count];
for (int i = 0; i < aList.Count; i++)
{
insertObject[i] = aList[i];
}
// 操作数据库
int result = moneyBLL.updateAccount(insertObject, null);
if (result > 0)
{
ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script type='text/javascript'>alert('导入成功。');</script> ");
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script type='text/javascript'>alert('导入失败。');</script> ");
}
}
分享到:
相关推荐
C# WinFORM 窗体小程序。采用oledb技术读取EXCEL表格内容,并使用DataGridView控件进行展示,含全部源代码,供有需要的人士下载学习使用。
方法一:采用OleDB读取EXCEL文件:方法二:引用的com组件:Microsoft.Office.Interop.Excel.dll 读取EXCEL文件 方法三:将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。...
在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,例如将Excel数据通过应用程序导入SQL Sever等数据库中以备使用。笔者在开发“汽车产业链ASP协同商务平台”中遇到了类似需求。某...
C# 示例源码 快速读取Excel,把Excel当成数据来源(Microsoft.Jet.OLEDB.4.0),可读取多张表,
c# 在excel导入的时候报错 Microsoft.ACE.OLEDB.12.0,安装对应系统版本的AccessDatabaseEngine即可解决该问题
功能描述: ...2、选取Excel中某个sheet中的某几列读入到Dataset里面; 3、从Dataset导出到Excel表格 注:此代码运行是需有office组建作为支持,即运行该程序的电脑上必须安装office软件;程序由VS2012开发。
根据excel文件的完整存放路径,读取该excel文件所有的sheet的名字,默认的一般是sheet1,sheet2等,也可以自定义名字,得到的是一个DataTable,是sheet的名字集合。
private string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\工作表.xls;Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";
我只要OleDb就够用了。 读取内容产生DataSet? 没问题! 创建Excel文件? 没问题! 在Excel文件中创建Sheet? 没问题! 我要取出Excel文件中的所有表名? 没问题! 我要以索引来操作Sheet,不是名字行不? 没问题...
【Microsoft.ACE.OLEDB.12.0-提供程序】本资源是C#程序使用OleDb读取Excel时必备的驱动程序——Microsoft.ACE.OLEDB.12.0的提供程序。OleDb是一个数据库驱动接口,能够通过标准的 SQL 语句访问多种数据库,包括 ...
本文实例讲述了C#使用oledb读取excel表格内容到datatable的方法。分享给大家供大家参考。具体分析如下: 首先看一段实例代码 代码如下:string strCon = @”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + ...
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFilePath + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\"";
本文实例讲述了C#使用oledb操作excel文件的方法。分享给大家供大家参考。具体分析如下: 不管什么编程语言都会提供操作Excel文件的方式,C#操作Excel主要有以下几种方式: 1.Excel 说明:利用Office 的Excel组件来...
C#写的读取Excel2007的程序。有完整代码。 关键代码: string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Filename + ...
使用C#上传并读取EXCEL的数据,显示到GridView中,参考附件,简单片段如下: if (extension == ".xls") { //IMEX=1表示将所有的列全部视为文本。省略时,excel中包含 汉字 和 数字,数字会读取不出来。 //HDR表示...
使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可。 一 在D盘创建excel文件test.xls: 二 将工作表Sheet1的内容读取到DataSet 代码如下: string strConn = “Provider=Microsoft.Jet.OLEDB....
使用c#对Excel的创建和读取,兼容了xls以及xlsx格式。Provider=Microsoft.ACE.OLEDB.12.0 Provider=Microsoft.Jet.OLEDB.4.0
1、学会使用Microsoft.Office.Interop.Excel读取Excel,避免了使用OleDb获取Excel工作表异常问题; 2、最重要的是可以学会导入导出合并单元格的思想,本实例代码可能会对您的需求有出入,但重要的是思想; 3、学会...
如名称所述。