ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#编程学习49:将数据写入到excel中

2022-03-19 16:35:08  阅读:315  来源: 互联网

标签:colIndex 49 C# excel Add ws myApp dt dr


本文为

C#编程学习27: C#操作Excel从入门到精通_m1m2m3mmm的博客-CSDN博客

中单独提炼出的新建Excel文件并导出数据的专门总结;更全面的总结可以上一篇。


1 添加引用及名称空间

添加引用

添加名称空间

//用到的名空间
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;//导入dll

2 实现代码及逻辑

2.1 代码框架

这段代码主要干了以下几个事情:

  • 创建excel应用,关闭excel;

  • 在excel中创建workbook,对于本身不存在需要程序新创建的excel文件,不能使用myApp.Workbooks.Open(str)方法,否则会报HRESULT:0x800A03EC异常

  • 并在workbook中添加worksheets

  • 将worksheets另存为指定目录

  • 关闭workbook

    //打开实验数据
    string str = @“E:C#Example200LearnExcelLearnExceldata.xlsx”;
    Excel.Workbook wb = myApp.Workbooks.Add(true);
    Excel.WorkShee ws = myApp.WorkSheets.Add();

    //…

    ws.SaveAs(str);
    //关闭数据表
    wb.Close();

    myApp.Quit();
    myApp = null;
    System.Runtime.InteropServices.Marshal.ReleaseComObject(myApp);

2.2 创建数据表

一般我们汇报数据保存在DataTable对象中,这一部分我们介绍DataTable使用的一些基本知识。

  • 创建DataTable对象并生成列头

            DataTable dt = new DataTable();
            //添加表头
            dt.Columns.Add("姓名");
            dt.Columns.Add("年龄");
            dt.Columns.Add("性别");
    
  • 创建新行并将其添加到DataTable对象中

    DataRow dr = dt.NewRow();
    dr[“姓名”] = “张三”;
    dr[“年龄”] = “18”;
    dr[“性别”] = “女”;
    dt.Rows.Add(dr);

2.3 将DataTable对象写入到worksheets中

  • 在第一行写表头文字

    ws.Cells[1,1] = “姓名”;
    ws.Cells[1,2] = “年龄”;
    ws.Cells[1,3] = “性别”;

  • 将dt对象的数据写入excel,注意在Excel中,行和列的编号是从1开始的

            int rowIndex = 2;
            foreach (DataRow row in dt.Rows)
            {
                for (int colIndex = 0; colIndex < dt.Columns.Count; colIndex++)
                {
                    ws.Cells[rowIndex, colIndex + 1] = row[colIndex].ToString();
                }
                rowIndex++;
            }
    

3 完整代码

//打开实验数据
string str = @"E:C#Example200LearnExcelLearnExceldata.xlsx";
Excel.Workbook wb = myApp.Workbooks.Add(true);
Excel.WorkShee ws = myApp.WorkSheets.Add();
 
DataTable dt = new DataTable();
//添加表头
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
dt.Columns.Add("性别"); 
 
// 添加一行数据
DataRow dr = dt.NewRow();
dr["姓名"] = "张三";
dr["年龄"] = "18";
dr["性别"] = "女";
dt.Rows.Add(dr);

// 往表格中写入第一行数据,即表头
ws.Cells[1,1] = "姓名";
ws.Cells[1,2] = "年龄";
ws.Cells[1,3] = "性别";

// 往表格中写入数据行
int rowIndex = 2;
foreach (DataRow row in dt.Rows)
{
      for (int colIndex = 0; colIndex < dt.Columns.Count; colIndex++)
      {
          ws.Cells[rowIndex, colIndex + 1] = row[colIndex].ToString();
      }
      rowIndex++;
}

ws.SaveAs(str);
//关闭数据表
wb.Close();
 
myApp.Quit();
myApp = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(myApp);

标签:colIndex,49,C#,excel,Add,ws,myApp,dt,dr
来源: https://blog.csdn.net/Bejpse/article/details/123597279

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有