有时候,我们的程序是需要发布到空间服务商提供的空间上的,而很多时候空间服务商出于安全方面考虑,并不提供对Excel的COM支持,而程序又需要导出Excel的功能,这个时候,我们需要从另一个方面来着手。这里提供一个不通过COM导出Excel的例子。
该方法主要是通过写文件的方法把数据写入到Excel中。
/// <summary>
/// datatable导出Excel
/// </summary>
/// <param name="strFileName">文件名</param>
/// <param name="dt">datatable</param>
/// <returns>true:成功 false:失败</returns>
public static bool ExportExcel(string strFileName, DataTable dt)
{
File.Delete(strFileName);
string ExcelFileName = strFileName;
FileStream fs = new FileStream(ExcelFileName, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter w = new StreamWriter(fs, Encoding.Default);
try
{
// 写入Excel的列头
for (int i = 0; i < dt.Columns.Count; i++)
{
w.Write( dt.Columns[i].ColumnName.Trim()+ Convert.ToChar(9));
}
w.Write("/n");
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < iColunmCount; j++)
{
w.Write(dt.Rows[i][j].ToString().Trim() + Convert.ToChar(9));
}
w.Write("/n");
}
w.Flush();
w.Close();
}
catch
{
w.Close();
return false;
}
return true;
}
通过这种方法导出的Excel中可能含有一些特殊的符号,将这些Excel中的数据导入到DataTable中的时候,可能会出现一些小的问题。关于这个小问题,我会在后面的文章中说明。