C# 读写Excel

namespace a.Excel
{
    class WR_Excel
    {
        public void TestWR()
        {
            string importExcelPath = "E:\\import.xlsx";
            string exportExcelPath = "E:\\export.xlsx";
            IWorkbook workbook = WorkbookFactory.Create(importExcelPath);
            ISheet sheet = workbook.GetSheetAt(0);//获取第一个工作薄
            IRow row = (IRow)sheet.GetRow(0);//获取第一行

            //设置第一行第一列值,更多方法请参考源官方Demo
            row.CreateCell(0).SetCellValue("test");//设置第一行第一列值
            //导出excel
            FileStream fs = new FileStream(exportExcelPath, FileMode.Create, FileAccess.ReadWrite);
            workbook.Write(fs);
            fs.Close();
        }

        public void GreatFile(string filname)
        {

            IWorkbook hssfworkbook = new HSSFWorkbook();  //用于创建 .xls
                                                          // IWorkbook myXSSFworkbook = new XSSFWorkbook();  //用于创建 .xlsx
            ISheet mysheetHSSF = hssfworkbook.CreateSheet("Sheet1");
            hssfworkbook.CreateSheet("Sheet2");
            hssfworkbook.CreateSheet("Sheet3");
            hssfworkbook.CreateSheet("Sheet4");

            IRow rowHSSF = mysheetHSSF.CreateRow(0);
            rowHSSF.CreateCell(0).SetCellValue(true);
             rowHSSF.CreateCell(1).SetCellValue(System.DateTime.Now);
            rowHSSF.CreateCell(2).SetCellValue(10.13);
            rowHSSF.CreateCell(3).SetCellValue("学习NPOI!");

            FileStream file = new FileStream(filname, FileMode.Create);

            hssfworkbook.Write(file);

            file.Close();
        }

        public void WriteFile(string filname, List<Double> y0 , List<Double> y1,
            List<Double> y2, List<Double> y3, List<Double> y4, List<Double> y5,
             List<Double> y6, List<Double> y7, List<Double> y8, List<Double> y9, List<Double> y10)
        {
           // IWorkbook workbook = WorkbookFactory.Create(filname);
           // ISheet sheet = workbook.GetSheetAt(0);//获取第一个工作薄

            IWorkbook workbook = new HSSFWorkbook();  //用于创建 .xls
                                                          // IWorkbook myXSSFworkbook = new XSSFWorkbook();  //用于创建 .xlsx
            ISheet sheet = workbook.CreateSheet("Sheet1");

            IRow row = sheet.CreateRow(0);
            row.CreateCell(0).SetCellValue("电池电压");//设置第一行第一列值
            row.CreateCell(1).SetCellValue("母线电压");//设置第一行第一列值
            row.CreateCell(2).SetCellValue("充电电流");//设置第一行第一列值
            row.CreateCell(3).SetCellValue("放电电流");//设置第一行第一列值
            row.CreateCell(4).SetCellValue("发电电流");//设置第一行第一列值
            row.CreateCell(5).SetCellValue("电机1电流");//设置第一行第一列值
            row.CreateCell(6).SetCellValue("电机2电流");//设置第一行第一列值
            row.CreateCell(7).SetCellValue("电机3电流");//设置第一行第一列值
            row.CreateCell(8).SetCellValue("电机4电流");//设置第一行第一列值
            row.CreateCell(9).SetCellValue("电机5电流");//设置第一行第一列值
            row.CreateCell(10).SetCellValue("电机6电流");//设置第一行第一列值
            row.CreateCell(11).SetCellValue("放电电流");//设置第一行第一列值
            for (int i = 0; i < y0.Count; i++)
            {
                row = sheet.CreateRow(i+1);
                //IRow row = (IRow)sheet.GetRow(i);//获取第一行
                row.CreateCell(0).SetCellValue(y0[i]);//设置第一行第一列值
                row.CreateCell(1).SetCellValue(y1[i]);//设置第一行第一列值
                row.CreateCell(2).SetCellValue(y2[i]);//设置第一行第一列值
                row.CreateCell(3).SetCellValue(y3[i]);//设置第一行第一列值
                row.CreateCell(4).SetCellValue(y4[i]);//设置第一行第一列值
                row.CreateCell(5).SetCellValue(y5[i]);//设置第一行第一列值
                row.CreateCell(6).SetCellValue(y6[i]);//设置第一行第一列值
                row.CreateCell(7).SetCellValue(y7[i]);//设置第一行第一列值
                row.CreateCell(8).SetCellValue(y8[i]);//设置第一行第一列值
                row.CreateCell(9).SetCellValue(y9[i]);//设置第一行第一列值
                row.CreateCell(10).SetCellValue(y10[i]);//设置第一行第一列值
            }



            FileStream file = new FileStream(filname, FileMode.Create);
            workbook.Write(file);
            file.Close();
        }

        public void ReadFile(string filname, List<Double> y0, List<Double> y1,
           List<Double> y2, List<Double> y3, List<Double> y4, List<Double> y5,
            List<Double> y6, List<Double> y7, List<Double> y8, List<Double> y9, List<Double> y10)
        {
            try
            {
                IWorkbook workbook = WorkbookFactory.Create(filname);
                ISheet sheet = workbook.GetSheetAt(0);//获取第一个工作薄
                int len = sheet.LastRowNum;
                IRow rowHSSF = sheet.GetRow(0);
                if (rowHSSF.GetCell(0).ToString() == "电池电压")
                {
                    for (int i = 0; i < len; i++)
                    {
                        rowHSSF = sheet.GetRow(i + 1);
                        y0.Add(Convert.ToInt32(rowHSSF.GetCell(0).ToString()));
                        y1.Add(Convert.ToInt32(rowHSSF.GetCell(1).ToString()));
                        y2.Add(Convert.ToInt32(rowHSSF.GetCell(2).ToString()));
                        y3.Add(Convert.ToInt32(rowHSSF.GetCell(3).ToString()));
                        y4.Add(Convert.ToInt32(rowHSSF.GetCell(4).ToString()));
                        y5.Add(Convert.ToInt32(rowHSSF.GetCell(5).ToString()));
                        y6.Add(Convert.ToInt32(rowHSSF.GetCell(6).ToString()));
                        y7.Add(Convert.ToInt32(rowHSSF.GetCell(7).ToString()));
                        y8.Add(Convert.ToInt32(rowHSSF.GetCell(8).ToString()));
                        y9.Add(Convert.ToInt32(rowHSSF.GetCell(9).ToString()));
                        y10.Add(0);//rowHSSF.GetCell(10).ToString())
                    }
                }
            }
            catch
            {
                MessageBox.Show("文件被另外的进程打开");
                return;
            }
            finally
            { 
            
            }                                   
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值