打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ExcelHelper
userphoto

2015.03.23

关注
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
using System.IO;
using System.Reflection;

namespace Utility
{
    public class ExcelHelper
    {
        private Application app;
        private Workbooks wbks;
        private _Workbook _wbk;
        private Sheets shs;
        private _Worksheet _wsh;
        private String filePath;
        public ExcelHelper(String filePath)
        {
            this.filePath = filePath;
            create(filePath);
        }

        public void create(String filePath)
        {
            app = new Application();
            wbks = app.Workbooks;
            _wbk = wbks.Add(filePath);
            shs = _wbk.Sheets;
            if (shs.Count > 0)
                _wsh = shs[1];
        }
        public Boolean setCellsTo(int row, int Column, String value)
        {
            Range r = _wsh.Cells[row, Column];
            r.set_Value(value);
            return true;
        }
        public Boolean setCellsTo(int _WorksheetIndex, int row, int Column, String value)
        {
            if (!setWorksheet(_WorksheetIndex))
            {
                return false;
            }
            return setCellsTo(row, Column, value);
        }
        public Boolean setCellsTo(String _WorksheetName, int row, int Column, String value)
        {
            return setCellsTo(getWorksheet(_WorksheetName), row, Column, value);
        }
        public Boolean setWorksheet(int index)
        {
            _wsh = shs[index];
            return true;
        }
        public Boolean setWorksheet(String sheetName)
        {
            int index = getWorksheet(sheetName);
            if (index == -1)
                return false;
            return setWorksheet(index);
        }
        public int getWorksheet(String sheetName)
        {
            int index = 1;
            for (; index <= shs.Count; index++)
            {
                _Worksheet w = shs[index];
                if (sheetName.Trim().Equals(w.Name.Trim()))
                    return index;
            }
            return -1;
        }
        public String getCellsValue(int row, int Column)
        {
            Range r = _wsh.Cells[row, Column];
            return r.Text;
        }
        public String getCellsValue(int _WorksheetIndex, int row, int Column)
        {
            if (!setWorksheet(_WorksheetIndex))
            {
                throw new Exception("找不到该工作簿");
            }
            return getCellsValue(row, Column);
        }
        public String getCellsValue(String _WorksheetIndex, int row, int Column)
        {
            if (!setWorksheet(_WorksheetIndex))
            {
                throw new Exception("找不到该工作簿");
            }
            return getCellsValue(row, Column);
        }

        public void close()
        {
            _wbk.Close(null, null, null);
            wbks.Close();
            app.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
            app = null;
        }
        public void save()
        {
            save(filePath);
        }
        public void save(String filePath)
        {
            //屏蔽掉系统跳出的Alert
            app.AlertBeforeOverwriting = false;
            //保存到指定目录
            _wbk.SaveAs(filePath, 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);
        }
        //
        public List<String> getRow(int row, int startColumn, int endColumn, String stopStr)
        {
            List<String> cols = new List<string>();

            for (int n = startColumn; startColumn < endColumn; n++)
            {
                String value = this.getCellsValue(row, n);
                if (value.Trim().Equals(stopStr) && stopStr != null)
                    break;
                cols.Add(value);
            }
            return cols;
        }
        /// <summary>
        /// 遇到value= "" 返回 
        /// </summary>
        /// <param name="row"></param>
        /// <param name="startColumn"></param>
        /// <returns></returns>
        public List<String> getRow(int row, int startColumn)
        {
            return getRow(row, startColumn, int.MaxValue, "");
        }
        public String[] getSheetNames()
        {
            String[] Names = new String[shs.Count];

            for (int n = 1; n <= shs.Count; n++)
            {
                Names[n] = shs[n];
            }

            return Names;
        }

    }
}


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
dom4j处理超大XML
java将百万级别数据导出到Excel中,用时仅需要98941毫秒
SpringBoot导入xls数据
关于Java文件路径问题
(转) unity 在移动平台中,文件操作路径详解
An easy JDBC wrapper(Row.java)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服