DataTable 截取及DataTable 导出到Excel
/// <summary>
/// 截取包含所需字段的DataTable
/// </summary>
/// <param name="dt">需要进行截取处理的DataTable</param>
/// <param name="dataName">需要截取的相关数据列名</param>
/// <returns>截取处理后的DataTable</returns>
private DataTable reGetTable(DataTable dt, string[] dataName)
{
try
{
DataTable newDt = new DataTable();
for (int i = 0; i < dataName.Length; i++)
{
DataColumn dc = new DataColumn();
dc.ColumnName = dataName[i];
newDt.Columns.Add(dc);
}
DataRow r;
object[] rowArray = new object[dataName.Length];
for (int i = 0; i < dt.Rows.Count; i++)
{
r = newDt.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
for (int k = 0; k < dataName.Length; k++)
{
if (dt.Columns[j].ColumnName == dataName[k])
{
rowArray[k] = dt.Rows[i][dataName[k]].ToString();
}
}
}
r.ItemArray = rowArray;
newDt.Rows.Add(r);
}
if (newDt.Rows.Count > 0)
{
return newDt;
}
else
{
return null;
}
}
catch (Exception)
{
return null;
}
}
/// <summary>
///将DataTable内的数据导出到Excel
/// </summary>
/// <param name="dt">需要导出的DataTable</param>
/// <param name="headText">与DataTable列对应的表头Excel</param>
public void dataTableExport(DataTable dt, string[] headText)
{
try
{
if (dt.Rows.Count > 0)
{
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = true;
if (headText.Length != dt.Columns.Count)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
excel.Cells[1, i + 1] = dt.Columns[i].ColumnName.ToString();
}
}
else if (headText.Length > 0 && headText.Length == dt.Columns.Count)
{
for (int i = 0; i < headText.Length; i++)
{
if (headText[i].Trim() == "")
{
excel.Cells[1, i + 1] = dt.Columns[i].ColumnName.ToString();
}
else
{
excel.Cells[1, i + 1] = headText[i];
}
}
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
if (dt.Rows[i][j].GetType() == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dt.Rows[i][j].ToString();
}
else if(dt.Rows[i][j].GetType() == typeof(DateTime))
{
excel.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();
}
}
}
}
else
{
return;
}
}
catch (Exception)
{
return;
}
}
有些拙劣,一直想控制导出的Excel的单元格格式,以及设置其自适应高度和宽度,但百度多时无果,暂且告一段落。希望各位高人多多指点
浙公网安备 33010602011771号