原創|使用教程|編輯:我只采一朵|2018-01-22 14:40:46.000|閱讀 757 次
概述:MS Excel電子表格編輯器在編輯CSV文件方面做得很好。但是如果你沒有電子表格呢?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
MS Excel電子表格編輯器在編輯CSV文件方面做得很好。你可以排序和過濾數據,刪除不必要的列,添加編號。但是如果你沒有電子表格呢?編輯csv文件變成了噩夢。你必須跟蹤分隔符來理解這個或那個數據所指向的列。排序通常成為幾乎不可能完成的任務,尤其是在處理大量數據時。
這種情況怎么解決?我們有FastReport.Net。我們可以使用csv作為報表的數據源。在報表內部,執行數據轉換。然后,導出回csv文件。
讓我們來看一個帶有姓名和地址列表的小型CSV文件:
首先,確定我們想要做的轉換:
創建一個新的報表。添加一個新的CSV數據源文件。
在報表頁面上,放置FIO和地址字段,并添加地址字段兩次。第一個添加的地址字段編輯如下: [Substring ([Addresses .Address], 0.6)] 。所以,我們將莫斯科從其他地址中單獨拎出來。如果城市名稱不同,我們需要更復雜的處理。為此,你需要使用報表腳本。對于添加到帶區的文本對象,你需要創建 BeforePrint () 事件。在腳本中,我們添加了庫的使用:using System.Text.RegularExpressions;
這里是事件處理句柄代碼:
private void Text5_BeforePrint(object sender, EventArgs e) { Regex rgx = new Regex("([^,]|\n)+", RegexOptions.IgnoreCase); Match match = rgx.Match(Report.GetColumnValue("Адреса.Address").ToString()); if (match.Success) { Text5.Text = match.Value.ToString(); } }
如你所見,我們使用正則表達式來選擇逗號前的數據。
現在讓我們回到已添加的第二個地址字段。由于我們把城市名稱分成了一個獨立的列,所以其余的地址必須留在這里。我們使用Text3對象的腳本:
private void Text3_BeforePrint(object sender, EventArgs e) { Regex rgx = new Regex(@"(?<=,\s).*", RegexOptions.IgnoreCase); Match match = rgx.Match(Report.GetColumnValue("Addresses.Address").ToString()); if (match.Success) { Text3.Text = match.Value.ToString(); } }
現在我們按姓名排序數據。要做到這一點,雙擊“數據”帶區。選擇“排序”選項卡。我們有三個字段可以排序。我們只指定第一個值 – 姓名:
我們需要的只是按照姓名“Robert King”篩選數據。要做的這一點,再次雙擊數據帶區。在隨后出現的窗口中,選擇“過濾”選項卡并輸入表達式 [Addresses.Name]!="Robert King"
。
以預覽模式運行報表:
所以,我們刪除了ZIP列,按姓名稱對列表進行排序,將地址分成城市和街道,刪除了名字為Robert King的行。
現在讓我們導出到csv。要做到這一點,在預覽模式下,按下按鈕:
并選擇“CSV格式...”。在對話框中,單擊“確定”并選擇文件將被保存的位置。最后,我們得到以下CSV文件:
如你所見,事實證明,使用FastReport轉換文檔相當簡單,這與在Excel編輯器中工作時間成本相當。因此,FastReport可以成為處理CSV文件的最佳替代工具。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn