zoukankan      html  css  js  c++  java
  • 常用类-Excel-使用Aspose.Cells插件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Xml;
    using System.Data;
    using System.IO;
    using System.Data.OleDb;
    using Aspose.Cells;
    using System.Reflection;
    
    namespace Utils
    {
        /// <summary>
        /// 解析Excel文件
        /// </summary>
        public class ExcelUitl
        {
            public static DataSet ExcelToDS(string Path)
            {
                DataSet ds = new DataSet();
    
                Workbook workbook = new Workbook();
                workbook.Open(Path);
                Cells cells = workbook.Worksheets[0].Cells;
                DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);
                ds.Tables.Add(dt);
                return ds;
            }
            public static DataSet ExcelToDS(string Path, string sheetName)
            {
                DataSet ds = new DataSet();
    
                Workbook workbook = new Workbook();
                workbook.Open(Path);
    
                Worksheet sheet = workbook.Worksheets[sheetName];
                if (sheet == null)
                {
                    return null;
                }
                Cells cells = sheet.Cells;
                DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);
                ds.Tables.Add(dt);
                return ds;
            }
            public static DataSet GetTableList(string Path)
            {
                DataSet ds = new DataSet();
    
                Workbook workbook = new Workbook();
                workbook.Open(Path);
                if (workbook.Worksheets != null)
                {
                    foreach (Worksheet sheet in workbook.Worksheets)
                    {
                        Cells cells = sheet.Cells;
    
                        DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);
                        dt.TableName = sheet.Name;
                        ds.Tables.Add(dt);
                    }
                }
                return ds;
            }
    
            /// <summary> 
            /// </summary>
            /// <param name="tablelist"></param>
            /// <param name="path"></param>
            /// <param name="error"></param>
            public static void ImportAndZip(List<DataTable> tablelist, string excelFilePath)
            {
                Workbook workbook = new Workbook();
                int sheetIndex = 0;
    
                string dir = excelFilePath.Replace(Path.GetFileName(excelFilePath), "");
                string txtdir = Path.Combine(dir, "sco");
                if (!Directory.Exists(txtdir))
                {
                    Directory.CreateDirectory(txtdir);
                }
    
                DataTable error = new DataTable();
                error.TableName = "导出情况表";
                error.Columns.Add(new DataColumn()
                {
                    ColumnName = "错误工作簿名称",
                });
                error.Columns.Add(new DataColumn()
                {
                    ColumnName = "错误工作簿行",
                });
                error.Columns.Add(new DataColumn()
                {
                    ColumnName = "错误工作簿列名",
                });
                error.Columns.Add(new DataColumn()
                {
                    ColumnName = "错误原因",
                });
                error.Columns.Add(new DataColumn()
                {
                    ColumnName = "导入路径",
                });
    
                foreach (DataTable table in tablelist)
                {
                    Worksheet sheet = null;
                    if (sheetIndex == 0)
                    {
                        sheet = workbook.Worksheets[sheetIndex];
                        sheet.Name = table.TableName;
                    }
                    else
                    {
                        sheet = workbook.Worksheets.Add(table.TableName);
                    }
    
                    //标题
                    int indexX = 0, indexY = 0;
                    foreach (DataColumn column in table.Columns)
                    {
                        sheet.Cells[indexX, indexY].PutValue(column.ColumnName);
                        indexY++;
                    }
    
                    int Colnum = table.Columns.Count;//表格列数 
                    int Rownum = table.Rows.Count;//表格行数 
    
                    //生成数据行 
                    for (int i = 0; i < Rownum; i++)
                    {
                        for (int k = 0; k < Colnum; k++)
                        {
                            try
                            {
                                //单元格最大存 32k内容
                                sheet.Cells[1 + i, k].PutValue(table.Rows[i][k].ToString()); //添加数据
                            }
                            catch (Exception ex)
                            {
                                string message = "";
                                string txtName = table.TableName + "_" + i + ".txt";
                                string txtPath = "";
                                if (ex.Message.ToString().Contains("MS Excel only allows to put a string shorter than 32K to a Cell"))
                                {
                                    message = "单元格数据大于32K不能写入excel";
                                    //将内容写入txt
                                    File.WriteAllText(Path.Combine(txtdir, txtName), table.Rows[i][k].ToString());
                                    txtPath = "sco/" + txtName;
                                }
                                else
                                {
                                    message = ex.Message.ToString();
                                }
    
                                //sun: 当数据太大。我们不导入excel,将文本导入txt,路径路径
                                error.Rows.Add(new object[] { sheet.Name, i, table.Columns[k].ColumnName, message, txtPath });
                            }
                        }
                    }
                    SetHeaderStyle(sheet);
    
                    //sheet个数
                    sheetIndex++;
                }
    
    
                //将错误信息表也写入excel
                Worksheet errrsheet = workbook.Worksheets.Add(error.TableName);
                for (int i = 0; i < error.Columns.Count; i++)
                {
                    errrsheet.Cells[0, i].PutValue(error.Columns[i].ColumnName);
                }
                //foreach (DataColumn column in error.Columns)
                //{
                //    errrsheet.Cells[0, 0].PutValue(column.ColumnName);
                //}
                int eColnum = error.Columns.Count;//表格列数 
                int eRownum = error.Rows.Count;//表格行数 
                for (int i = 0; i < eRownum; i++)
                {
                    for (int k = 0; k < eColnum; k++)
                    {
                        errrsheet.Cells[1 + i, k].PutValue(error.Rows[i][k].ToString()); //添加数据
                    }
                }
                SetHeaderStyle(errrsheet);
    
                workbook.Save(excelFilePath);
            }
    
            /// <summary>
            /// 创建excel
            /// </summary>
            /// <param name="tablelist"></param>
            /// <param name="path"></param>
            public static void CreateExcel(List<DataTable> tablelist, string path)
            {
                Workbook workbook = new Workbook();
                int sheetIndex = 0;
                foreach (DataTable table in tablelist)
                {
                    Worksheet sheet = null;
                    if (sheetIndex == 0)
                    {
                        sheet = workbook.Worksheets[sheetIndex];
                        sheet.Name = table.TableName;
                    }
                    else
                    {
                        sheet = workbook.Worksheets.Add(table.TableName);
                    }
    
                    //标题
                    int indexX = 0, indexY = 0;
                    foreach (DataColumn column in table.Columns)
                    {
                        sheet.Cells[indexX, indexY].PutValue(column.ColumnName);
                        indexY++;
                    }
    
                    int Colnum = table.Columns.Count;//表格列数 
                    int Rownum = table.Rows.Count;//表格行数 
    
                    //生成数据行 
                    for (int i = 0; i < Rownum; i++)
                    {
                        for (int k = 0; k < Colnum; k++)
                        {
                            try
                            {
                                //单元格最大存 32k内容
                                sheet.Cells[1 + i, k].PutValue(table.Rows[i][k].ToString()); //添加数据
    
                            }
                            catch (Exception ex)
                            {
                                //sun: 当数据太大。我们不导入
    
                            }
                        }
                    }
                    SetHeaderStyle(sheet);
    
                    //sheet个数
                    sheetIndex++;
                }
    
                workbook.Save(path);
            }
            public static void SetHeaderStyle(Worksheet sheet)
            {
                #region header style
                Style style = new Style();
                style.Font.IsBold = true;
                style.Font.Size = 12;
                StyleFlag styleFlag = new StyleFlag
                {
                    FontBold = true,
                    FontSize = true,
                };
                sheet.Cells.ApplyRowStyle(0, style, styleFlag);
                sheet.AutoFitColumns();
    
                #endregion
            }
    
            public static void SetBodyStyle(Worksheet sheet, int column)
            {
                #region header style
                Style style = new Style();
                style.Font.IsBold = false;
                style.Font.Size = 11;
                StyleFlag styleFlag = new StyleFlag
                {
                    FontBold = true,
                    FontSize = true
                };
                sheet.Cells.ApplyColumnStyle(column, style, styleFlag);
                sheet.AutoFitColumns();
    
    
                #endregion
            }
        }
    
    
    
    
    }
    

      

  • 相关阅读:
    Coursera台大机器学习基础课程学习笔记2 -- 机器学习的分类
    Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
    flash项目优化总结
    flash builder4.7bug
    [转] MovieClip转Bitmap方法
    flash builder关掉自动编译功能
    flash builder调试
    我喜欢的两种单例写法
    IE浏览器打开f12才正常
    [转] swf文件加密基础
  • 原文地址:https://www.cnblogs.com/hanliping/p/10561785.html
Copyright © 2011-2022 走看看