分享

C#读取EXCEL文件

 一个好名字 2011-08-26

在项目中经常遇到读写EXCEL文件的需求。其实读取EXCEL很简单, 首先使用命名空间NExcel,然后加载文件到Workbook,循环读取就行了。


using NExcel;


Workbook wb = Workbook.getWorkbook(fileStream);

     Sheet sheet = wb.Sheets[0];

     int rowsCount = sheet.Rows;

for (int row = 2; row < rowsCount; row++)

{

         string sheet.getCell(0, row).Contents;

decimal TotalPrice = Convert.ToDecimal(sheet.getCell(1, row).Value);

     }

     

1:工程对excel类库的导入,如:c:\program files\Microsoft office\offiece11\excel.exe
2:命名控件的引入: using Microsoft.office.Interop.Excel;

3:如果是对一个已经存在的excel文件进行操作则:
Application app=new Application();
Workbook wbook=app.Workbooks.Open("c:\\temp.xls",Type.Missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing);

Worksheet worksheet=(Worksheet)wbook.Worksheets[1];

4:如果是新建一个excel文件:
Application app=new Application();
Workbook wbook=app.Workbook.Add(Type.missing);
Worksheet worksheet=(Worksheet)wbook.Worksheets[1];

5:设置某个单元格里的内容:
worksheet.Cells[1,2]="列内容"

6读取某个单元格里的内容
string temp=((Range)worksheet.Cells[1,2]).Text;

7设置某个单元格里的格式
Excel.Range rtemp=worksheet.get_Range("A1","A1");
rtemp.Font.Name="宋体";
rtemp.Font.FontStyle="加粗";
rtemp.Font.Size=5;

8 保存新建的内容:
worksheet.SaveAs("c:\\temp.xls",Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing,Type.missing);



4.C#读Excel并存入数据库

本文将介绍C#读Excel并存入数据库。直接从Excel中读取出来,然后对"供应商" select distinct,然后分别对每个供应商做表.

AD:

直接让C#读Excel,然后对"供应商" select distinct,然后分别对每个供应商做表。这样C#读Excel并存入数据库就完成了。

  1.  protected void Page_Load(object sender, EventArgs e)  
  2.  {  
  3.      DataSet ds = ImportExcel(Server.MapPath("ExcelFile/供应商违约扣款.xls"));  //C#读Excel
  4.      GridView1.DataSource = ds.Tables["ExcelInfo"].DefaultView;  
  5.      GridView1.DataBind();  
  6.  
  7.      ToDataBase(ds);  
  8.  }  
  9.  
  10. private DataSet ImportExcel(string strFileName)  
  11. {  
  12.     if (strFileName == ""return null;  
  13.     string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +  
  14.          "Data Source=" + strFileName + ";" +  
  15.          "Extended Properties=Excel 8.0;HDR=Yes;IMEX=1";  
  16.     OleDbDataAdapter ExcelDA = new OleDbDataAdapter("SELECT trim(供应商) as 供应商,零件名称,型号,批量,下线数,下线率,不合格原因,考核原因,考核金额  FROM [Sheet1$]", strConn);  
  17.     DataSet ExcelDs = new DataSet();  
  18.     try 
  19.     {  
  20.         ExcelDA.Fill(ExcelDs, "ExcelInfo");  
  21.  
  22.     }  
  23.     catch (Exception err)  
  24.     {  
  25.         System.Console.WriteLine(err.ToString());  
  26.     }  
  27.     return ExcelDs;  
  28. }  
  29.  
  30.  
  31. private bool ToDataBase(DataSet ds)  
  32. {  
  33.     DataTable dtSupplier = new DataTable("dtSupplier");  
  34.  
  35.  
  36.     DataView dv = ds.Tables[0].DefaultView;  
  37.  
  38.     string[] column = { "供应商" };  
  39.     dtSupplier = dv.ToTable(true, column);  
  40.  
  41.     for (int i = 0; i < dtSupplier.Rows.Count; i++)  
  42.     {  
  43.  
  44.         DataRow[] r = ds.Tables[0].Select("供应商='" + dtSupplier.Rows[i]["供应商"].ToString() + "'");  
  45.  
  46.         //插父表  
  47.  
  48.         for (int j = 0; j < r.Length; j++)  
  49.         {  
  50.             string ItemName = r[j]["零件名称"].ToString();  
  51.             string scale = r[j]["型号"].ToString();  
  52.             string batch = r[j]["批量"].ToString();  
  53.            string downLine = r[j]["下线数"].ToString();  
  54.             string downPercent = r[j]["下线率"].ToString();  
  55.             string outReason = r[j]["不合格原因"].ToString();  
  56.             string reason = r[j]["考核原因"].ToString();  
  57.             string amt = r[j]["考核金额"].ToString();  
  58.  
  59.             //插子表  
  60.         }  
  61.  
  62.         //save  
  63.     }  
  64.     return true;  





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多