public static void CreateByDataTable(DataSet ds, string fileName, string path)
{
XlsDocument doc = new XlsDocument();
doc.FileName = fileName;
int index = 1;
foreach (DataTable dt in ds.Tables)
{
string[] files = dt.TableName.Split('\\');
string file = files[files.Length - 1];
Worksheet sheet = null;
if (file.Length > 31)//名字不能超过31个字符
{
sheet = doc.Workbook.Worksheets.Add("Sheet" + index++);
}
else
{
sheet = doc.Workbook.Worksheets.Add(file);
}
//增加Title
for (int i = 1; i <= dt.Columns.Count; i++)
{
string caption = dt.Columns[i - 1].Caption;
if (string.IsNullOrEmpty(caption))
caption = dt.Columns[i - 1].ColumnName;
sheet.Cells.Add(1, i, caption);
}
//增加数据行
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 1; j <= dt.Columns.Count; j++)
{
sheet.Cells.Add(i + 2, j, dt.Rows[i][j - 1].ToString());
}
}
}
doc.Save(path, true);
}
/// <summary>
/// 生成Csv文件
/// </summary>
/// <param name="dt"></param>
/// <param name="fileName"></param>
/// <param name="path"></param>
public static void CreateCsvByDataTable(DataTable dt, string fileName, string path)
{
System.IO.StreamWriter sw = null;
try
{
sw = new System.IO.StreamWriter(System.IO.Path.Combine(path, fileName), false, Encoding.UTF8);
//增加Title
for (int i = 0; i < dt.Columns.Count; i++)
{
if (i < dt.Columns.Count - 1)
{
sw.Write(dt.Columns[i].ColumnName + ",");
}
else
{
sw.Write(dt.Columns[i].ColumnName);
}
}
sw.Write("\r\n");
//增加数据行
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j < dt.Columns.Count - 1)
{
sw.Write(dt.Rows[i][j].ToString().Replace(',', ' ').Replace('"', ' ') + ",");
}
else
{
sw.Write(dt.Rows[i][j].ToString().Replace(',', ' ').Replace('"', ' '));
}
}
sw.Write("\r\n");
}
}
finally
{
if (sw != null)
sw.Close();
}
}
// List To DataTable
/// <summary>
/// list转化为table
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="entitys"></param>
/// <returns></returns>
public static DataTable ListToDataTable<T>(List<T> entitys)
{
//检查实体集合不能为空
if (entitys == null || entitys.Count < 1)
{
return new DataTable();
}
//取出第一个实体的所有Propertie
Type entityType = entitys[0].GetType();
PropertyInfo[] entityProperties = entityType.GetProperties();
//生成DataTable的structure
//生产代码中,应将生成的DataTable结构Cache起来,此处略
DataTable dt = new DataTable("dt");
for (int i = 0; i < entityProperties.Length; i++)
{
//dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
dt.Columns.Add(entityProperties[i].Name);
}
//将所有entity添加到DataTable中
foreach (object entity in entitys)
{
//检查所有的的实体都为同一类型
if (entity.GetType() != entityType)
{
throw new Exception("要转换的集合元素类型不一致");
}
object[] entityValues = new object[entityProperties.Length];
for (int i = 0; i < entityProperties.Length; i++)
{
entityValues[i] = entityProperties[i].GetValue(entity, null);
}
dt.Rows.Add(entityValues);
}
return dt;
}
DataTableTo Excel、Csv
于 2022-11-07 17:14:09 首次发布