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
}
} }

  

常用类-Excel-使用Aspose.Cells插件的更多相关文章

  1. csharp: read excel using Aspose.Cells

    /// <summary> /// /// </summary> /// <param name="strFileName"></para ...

  2. 常用类-excel转csv

    public class ExcelFileHelper { public static bool SaveAsCsv(string excelFilePath, string destination ...

  3. 使用Aspose.Cells读取Excel

      最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...

  4. ASPOSE.Cells & ASPOSE.Words 操纵Excel和Word文档的 .NET Core 实例

    Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,它提供的原生API可以对Word.Excel.PDF.Powerpoint.Outlook.CAD.图片.3D.ZI ...

  5. Aspose.Cells基础使用方法整理

    Aspose.Cells 插件,将web端数据以excel形式导出到客户端. 相关文档: https://blog.csdn.net/djk8888/article/details/53065416 ...

  6. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  7. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  8. NPOI、MyXls、Aspose.Cells 导入导出Excel(转)

    Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导s出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你 ...

  9. C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

    [csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...

随机推荐

  1. C# get md5 from bytes

    static byte[] GetBytesFromDic(Dictionary<string,string> dic) { if(dic==null || !dic.Any()) { r ...

  2. OA表单制作(致远)

    第一步.导入已经制作好的xnl表单文件. 第二步.对每个字段设置相关属性. 1.设置文本属性,录入类型选择文本框. 2.设置日期属性,录入类型选择日期控件. 3.设置引用类型,录入类型选择关联表单-- ...

  3. bayaim——听课笔记_01.Docker基础应用 10课.txt

    ===========2019年8月5日18:39:06====================10.20.100.21rootbayaim ==========01-Docker介绍======== ...

  4. num2str(A, format)

    str = num2str(A, format)A: 数值类型的数组或者是单个的数值format:指定数字转换为字符串的格式,通常’%11.4g’是默认的.也可以指定转换为几位的字符串,不足用0填充, ...

  5. js 日期格式化小问题

    看一个图 toLocaleString 的格式是 yyyy/MM/d , 想要 yyyy/MM/dd, toISOString 的格式基本满足, 本想直接 split("T"),  ...

  6. IT兄弟连 HTML5教程 响应式布局实例

    在学习Media Queries模块前,先通过一个响应式布局实例来了解一下响应式布局和Media Queries模块的简单应用.在本例中,使用HTML5的结构元素定义了5个盒子.当浏览器窗口尺寸不同时 ...

  7. 【重学Node.js 第5篇】部署项目到腾讯云服务器

    课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...

  8. PlayJava Day028

    1.网络程序中套接字(Socket)用于将应用程序与端口连接起来 套接字是一个假想的连接装置,就像插插头的设备”插座“,用于连接电器与电线,如下所示 客户端:应用程序 <----> Soc ...

  9. JPA的entityManager的find、getReference、persisit、remove方法的使用

    场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...

  10. How to: Change the Format Used for the FullAddress and FullName Properties 如何:更改用于FullAddress和FullName属性的格式

    There are FullAddress and FullName properties in the Address and Person business classes that are su ...