zoukankan      html  css  js  c++  java
  • c#excel的操作例子

     1 class MyData//存储行数据
     2 {
     3 public List<string> RowData { get; set; } 
     4 }
     5 
     6 static void Main(string[] args)
     7 {
     8 
     9 Application app=new ApplicationClass();
    10 app.DisplayAlerts = false;
    11 var path = @"C:UsersAdministratorDesktopJTWC台风季1979-2010.xls";//读取数据的excel
    12 var path2=@"C:UsersAdministratorDesktopJTWC.xlsx";//存储数据的excel
    13 var workbook=app.Workbooks.Open(path, Missing.Value, Missing.Value, Missing.Value, Missing.Value
    14 , Missing.Value, Missing.Value, Missing.Value, Missing.Value
    15 , Missing.Value, Missing.Value, Missing.Value, Missing.Value);//打开指定位置的excel文件
    16 Worksheet sheet=(Worksheet)workbook.Sheets[1];//获取第一个table
    17 var resultWorkBook= app.Workbooks.Open(path2);
    18 var resultSheet =(Worksheet) resultWorkBook.Sheets[1];
    19 
    20 //
    21 var resultData=new List<MyData>();
    22 
    23 string numberAndNameStr = string.Empty;
    24 for (int i = 1; i < 31039; i++)
    25 {
    26 var number = ((Range) sheet.Cells[i, 1]).Text.ToString();
    27 var name = ((Range) sheet.Cells[i, 2]).Text.ToString();
    28 var tempStr = number + name;
    29 if (tempStr != numberAndNameStr)//根据每一行的前两个cell的组合,判断这一行数据是否属于同一个Typhoon(这是一个具体问题)
    30 {
    31 var str = new List<string>
    32 {
    33 ((Range) sheet.Cells[i, 1]).Text.ToString(),
    34 ((Range) sheet.Cells[i, 2]).Text.ToString(),
    35 ((Range) sheet.Cells[i, 3]).Text.ToString(),
    36 ((Range) sheet.Cells[i, 4]).Text.ToString(),
    37 ((Range) sheet.Cells[i, 5]).Text.ToString(),
    38 ((Range) sheet.Cells[i, 6]).Text.ToString(),
    39 ((Range) sheet.Cells[i, 7]).Text.ToString(),
    40 ((Range) sheet.Cells[i, 8]).Text.ToString()
    41 
    42 };
    43 var data = new MyData() {RowData = str};
    44 resultData.Add(data);
    45 //写入excel数据
    46 numberAndNameStr = tempStr;
    47 }
    48 }
    49 int row = 1;
    50 foreach (MyData myData in resultData)//循环每一行数据
    51 {
    52 for (int j = 0; j < myData.RowData.Count; j++)//循环一行数据的所有cell
    53 {
    54 resultSheet.Cells[row, j + 1] = myData.RowData[j];
    55 }
    56 row++;
    57 }
    58 
    59 app.AlertBeforeOverwriting = false; //屏蔽掉系统跳出的Alert
    60 //workbook.Save();
    61 resultWorkBook.SaveAs(path2, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//用save方法会保存失败
    62 
    63 app.Quit();
    64 System.Runtime.InteropServices.Marshal.ReleaseComObject(app);//释放资源
    65 Console.WriteLine("Over");
    66 }
    View Code
    Do something useful!
  • 相关阅读:
    AVR汇编初探之二《AVR的指令与汇编系统》
    Fedora 18 装完后干的事
    重建tempdb
    sqlserver 2008 r2 SqlClrProvider报错解析
    Analysis Memory In Sqlserver
    《设计模式之禅》学习笔记(七)
    容易弄错的繁体字
    《C Primer Plus》学习笔记
    什么是 Windows 能干而 Linux 干不了的事情
    MySQL中BLOB字段类型介绍
  • 原文地址:https://www.cnblogs.com/foreveryt/p/4014337.html
Copyright © 2011-2022 走看看