Excel 组件 MyXls
关玮
2023-12-01
MyXls是一个 Excel 输出类,纯C#开发。使用它可以不经Excel Com即可输出Excel文件。拥有输出速度快,格式兼容的特点,推荐需要写Excel文件的可优先考虑。MyXls的官方网站是myxls.in2bits.org,最新版本支持for Silverlight 2.0和for .NET 2.0,但不支持1.1。1.1的最高版本是0.5.2。以下实例兼容所有版本!
第三方下载地址:http://sourceforge.net/projects/myxls/files/MyXls/
using System;
using System.Data;
using org.in2bits.MyXls;
namespace Guaik.IO
{
///
/// DL_Excel 的摘要说明。
///
public class MyXlsExcel
{
///
/// 把DataSet的值输入到Excel中
///
/// 数据源
/// 保存路径
/// 输入的Excel文件路径
public static void funcWriteExcel(DataSet ds, string savePath)
{
funcWriteExcel(ds, savePath, null, null);
}
///
/// 把DataSet的值输入到Excel中
///
/// 数据源
/// 保存路径
/// 输入的Excel文件路径
public static void funcWriteExcel(DataSet ds, string savePath, string[] tableNames, string[] headText)
{
try
{
XlsDocument xls = new XlsDocument();
int rowIndex = 1;
int colIndex = 0;
int tabIndex = 0;
foreach (DataTable dt in ds.Tables)
{
Worksheet sheet = xls.Workbook.Worksheets.AddNamed(tableNames != null && tableNames.Length > tabIndex ? tableNames[tabIndex++] : dt.TableName);//状态栏标题名称
Cells cells = sheet.Cells;
tabIndex++;
//设置标题
int headIndex = 0;
foreach (DataColumn col in dt.Columns)
{
colIndex++;
cells.AddValueCell(1, colIndex, (headText != null && headText.Length > headIndex ? headText[headIndex++] : col.ColumnName));
}
foreach (DataRow row in dt.Rows)
{
rowIndex++;
colIndex = 0;
foreach (DataColumn col in dt.Columns)
{
colIndex++;
Cell cell = cells.AddValueCell(rowIndex, colIndex, row[col.ColumnName].ToString());
//cell.UseNumber = true;
}
}
}
string dir = System.IO.Path.GetDirectoryName(savePath);
if (!System.IO.Directory.Exists(dir))
{
System.IO.Directory.CreateDirectory(dir);
}
xls.FileName = System.IO.Path.GetFileName(savePath);
xls.Save(dir, true);
}
catch (Exception ex)
{
throw ex;
}
}
}