问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#导入导出数据到Excel的通用类源码

发布网友 发布时间:2022-12-23 21:10

我来回答

1个回答

热心网友 时间:2023-10-03 09:53

下面内容是关于C#导入导出数据到Excel的通用类的内容。

public class ExcelIO

{

    private int _ReturnStatus;

    private string _ReturnMessage;

    public int ReturnStatus

    {

        get{return _ReturnStatus;}

    }

    public string ReturnMessage

    {

        get{return _ReturnMessage;}

    }

    public ExcelIO()

    {

    }

    public DataSet ImportExcel(string fileName)

    {

        Excel.Application xlApp=new Excel.ApplicationClass();         

        if(xlApp==null)

        {

            _ReturnStatus = -1;

            _ReturnMessage = "无法创建Excel对象,可能您的计算机未安装Excel";

            return null;

        }     

        Excel.Workbook workbook;               

        try

        {

            workbook = xlApp.Workbooks.Open(fileName,0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, 1, 0);

        }

        catch

        {

            _ReturnStatus = -1;

            _ReturnMessage = "Excel文件处于打开状态,请保存关闭";

            return null;

        }     

        int n = workbook.Worksheets.Count;

        string[] SheetSet = new string[n];

        System.Collections.ArrayList al = new System.Collections.ArrayList();

        for(int i=1; i<=n; i++)

        {

            SheetSet[i-1] = ((Excel.Worksheet)workbook.Worksheets[i]).Name;

        }

        workbook.Close(null,null,null);       

        xlApp.Quit();

        if(workbook != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);

            workbook = null;

        }

        if(xlApp != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

            xlApp = null;

        } 

        GC.Collect();

        DataSet ds = new DataSet();       

        string connStr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+ fileName +";Extended Properties=Excel 8.0" ;

        using(OleDbConnection conn = new OleDbConnection (connStr))

        {

            conn.Open();

            OleDbDataAdapter da;

            for(int i=1; i<=n; i++)

            {

                da = new OleDbDataAdapter(sql,conn);

                da.Fill(ds,SheetSet[i-1]); 

                da.Dispose();

            }             

            conn.Close();

            conn.Dispose();

        }             

        return ds;

    }

    public bool ExportExcel(string reportName,DataTable dt,string saveFileName)

    {

        if(dt==null)

        {

            _ReturnStatus = -1;

            _ReturnMessage = "数据集为空!";

            return false;         

        }

        bool fileSaved=false;

        Excel.Application xlApp=new Excel.ApplicationClass(); 

        if(xlApp==null)

        {

            _ReturnStatus = -1;

            _ReturnMessage = "无法创建Excel对象,可能您的计算机未安装Excel";

            return false;

        }

        Excel.Workbooks workbooks=xlApp.Workbooks;

        Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);

        worksheet.Cells.Font.Size = 10;

        Excel.Range range;

        long totalCount=dt.Rows.Count;

        long rowRead=0;

        float percent=0;

        worksheet.Cells[1,1]=reportName;

        ((Excel.Range)worksheet.Cells[1,1]).Font.Size = 12;

        ((Excel.Range)worksheet.Cells[1,1]).Font.Bold = true;

        for(int i=0;i<dt.Columns.Count;i++)

        {

            worksheet.Cells[2,i+1]=dt.Columns[i].ColumnName;

            range=(Excel.Range)worksheet.Cells[2,i+1];

            range.Interior.ColorIndex = 15;

            range.Font.Bold = true;

        }

        for(int r=0;r<dt.Rows.Count;r++)

        {

            for(int i=0;i<dt.Columns.Count;i++)

            {

                worksheet.Cells[r+3,i+1]=dt.Rows[r][i].ToString();

            }

            rowRead++;

        }

        range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[dt.Rows.Count+2,dt.Columns.Count]);

        range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);

        if( dt.Rows.Count > 0)

        {

            range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;

            range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;

            range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;

        }

        if(dt.Columns.Count>1)

        {

            range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;

            range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

            range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;

        }

        if(saveFileName!="")

        {

            try

            {

                workbook.Saved =true;

                workbook.SaveCopyAs(saveFileName);

                fileSaved=true;

            }

            catch(Exception ex)

            {

                fileSaved=false;

                _ReturnStatus = -1;

                _ReturnMessage = "导出文件时出错,文件可能正被打开!n"+ex.Message;

            }

        }

        else

        {

            fileSaved=false;

        }         

        if(range != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(range);

            range = null;

        }

        if(worksheet != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);

            worksheet = null;

        }

        if(workbook != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);

            workbook = null;

        }

        if(workbooks != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);

            workbooks = null;

        }             

        xlApp.Application.Workbooks.Close();

        xlApp.Quit();

        if(xlApp != null)

        {

            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

            xlApp = null;

        }

        GC.Collect();

        return fileSaved;

    }

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 鲜花小镇鲜花礼包顺序 鲜花小镇最新礼包码2022可以领几次 鲜花小镇游戏的礼包码是什么小红书 鲜花小镇最新礼包码 别人是怎么不用通过我就可以登录我的支付宝? 参加教师公招的条件? 中学教师需要什么条件? 想买个触屏手机,但是没用过触屏的,大家能不能说说触屏的优缺点啊? 触屏手机好吗 2019款瑞虎8豪华版1.6手机无线充电功能有吗? 瑞虎8精英版不支持无线充电吗 瑞虎8plus豪耀记忆座椅怎么调? 瑞虎8最新款多少钱能落地? 22款虎8plus无线充电用走线吗 太原天然气如何网上缴费 太原国新能源可以网上缴费了吗 学生票为什么没有二维码检票 王者末世是什么意思 京东下单在哪里备注 宝宝取名字大全男孩 银行卡付不了款异常怎么回事 怎样注销 怎么永久注销 原来登录的怎么注销? 怎么注销掉删除 如何注销 如何注销掉 怎么注销? 怎样注销 怎么永久注销 原来登录的怎么注销? 怎么注销掉删除 如何注销 如何注销掉 怎么注销? 柯尔鸭家里养臭不臭 养柯尔鸭干净吗 柯尔鸭好养吗 柯尔鸭好不好养 冬天能孵化柯尔鸭吗 键盘灯亮着但是所有按键无效怎么办?