region "導出CSV"
/// <summary>
/// DataTableToCsv
/// </summary>
/// <param name="dt"></param>
/// <param name="fileName">文件名稱,不用后綴</param>
/// <remarks>
/// 文件格式
///每條記錄占一行
///以逗號為分隔符
///逗號前后的空格會被忽略
///字段中包含有逗號,該字段必須用雙引號括起來
///字段中包含有換行符,該字段必須用雙引號括起來
///字段前后包含有空格,該字段必須用雙引號括起來
///字段中的雙引號用兩個雙引號表示
///字段中如果有雙引號,該字段必須用雙引號括起來
///第一條記錄,可以是字段名
/// </remarks>
public static void TableToCsv(List<ExcelFormat> excelFormat, string fileName)
{
DataTable dt = CsvStreamReader.ToDataTableTow(excelFormat);
if (dt.Columns.Count > 0)
{
dt.Columns["UploadTime"].ColumnName = "時間";
dt.Columns["AgCI1"].ColumnName = "測點";
dt.Columns["AgCI2"].ColumnName = "測試成果";
}
//string stmp = Assembly.GetExecutingAssembly().Location;
//stmp = stmp.Substring(0, stmp.LastIndexOf('\\'));//刪除文件名
fileName = ConfigurationManager.AppSettings["Path"] + fileName + ".csv";
//string curPath = Directory.GetCurrentDirectory();
string savePath = ConfigurationManager.AppSettings["Path"];
string saveFile = fileName;
//創建路徑和文件
FileStream fs;
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
if (!File.Exists(saveFile))
{
fs = new FileStream(saveFile, FileMode.CreateNew, FileAccess.ReadWrite);
}
else
{
File.Delete(saveFile);
fs = new FileStream(saveFile, FileMode.CreateNew, FileAccess.ReadWrite);
}
//StreamWriter sw = new StreamWriter(fs, new System.Text.UnicodeEncoding());
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
//寫標題
int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
sw.Write(dt.Columns[i]);
//sw.Write(dt.Columns[i]);
if (i < iColCount - 1)
{
sw.Write(",");
//sw.Write("|");
}
}
sw.Write(sw.NewLine);
//寫內容
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < iColCount; i++)
{
if (!Convert.IsDBNull(dr[i]))
sw.Write(dr[i].ToString());
//sw.Write(dr[i].ToString());
else
sw.Write("\"\"");
//sw.Write("");
if (i < iColCount - 1)
{
sw.Write(",");
//sw.Write("|");
}
}
sw.Write(sw.NewLine);
}
sw.Flush();
sw.Close();
fs.Close();
}
#endregion