如何更簡(jiǎn)單實(shí)現(xiàn)CSV文件轉(zhuǎn)換
MS Excel電子表格編輯器在編輯CSV文件方面做得很好。你可以排序和過濾數(shù)據(jù),刪除不必要的列,添加編號(hào)。但是如果你沒有電子表格呢?編輯csv文件變成了噩夢(mèng)。你必須跟蹤分隔符來理解這個(gè)或那個(gè)數(shù)據(jù)所指向的列。排序通常成為幾乎不可能完成的任務(wù),尤其是在處理大量數(shù)據(jù)時(shí)。
這種情況怎么解決?我們有FastReport.Net。我們可以使用csv作為報(bào)表的數(shù)據(jù)源。在報(bào)表內(nèi)部,執(zhí)行數(shù)據(jù)轉(zhuǎn)換。然后,導(dǎo)出回csv文件。
讓我們來看一個(gè)帶有姓名和地址列表的小型CSV文件:
首先,確定我們想要做的轉(zhuǎn)換:
- 刪除PostalCode列;
- 從地址中提取城市名稱,作為一個(gè)單獨(dú)的字段;
- 所有記錄按姓名排序;
- 從數(shù)據(jù)集中刪除Robert King的姓氏。
創(chuàng)建一個(gè)新的報(bào)表。添加一個(gè)新的CSV數(shù)據(jù)源文件。
在報(bào)表頁(yè)面上,放置FIO和地址字段,并添加地址字段兩次。第一個(gè)添加的地址字段編輯如下: [Substring ([Addresses .Address], 0.6)] 。所以,我們將莫斯科從其他地址中單獨(dú)拎出來。如果城市名稱不同,我們需要更復(fù)雜的處理。為此,你需要使用報(bào)表腳本。對(duì)于添加到帶區(qū)的文本對(duì)象,你需要?jiǎng)?chuàng)建 BeforePrint () 事件。在腳本中,我們添加了庫(kù)的使用: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(); } }
如你所見,我們使用正則表達(dá)式來選擇逗號(hào)前的數(shù)據(jù)。
現(xiàn)在讓我們回到已添加的第二個(gè)地址字段。由于我們把城市名稱分成了一個(gè)獨(dú)立的列,所以其余的地址必須留在這里。我們使用Text3對(duì)象的腳本:
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(); } }
現(xiàn)在我們按姓名排序數(shù)據(jù)。要做到這一點(diǎn),雙擊“數(shù)據(jù)”帶區(qū)。選擇“排序”選項(xiàng)卡。我們有三個(gè)字段可以排序。我們只指定第一個(gè)值 – 姓名:
我們需要的只是按照姓名“Robert King”篩選數(shù)據(jù)。要做的這一點(diǎn),再次雙擊數(shù)據(jù)帶區(qū)。在隨后出現(xiàn)的窗口中,選擇“過濾”選項(xiàng)卡并輸入表達(dá)式 [Addresses.Name]!="Robert King"
。
以預(yù)覽模式運(yùn)行報(bào)表:
所以,我們刪除了ZIP列,按姓名稱對(duì)列表進(jìn)行排序,將地址分成城市和街道,刪除了名字為Robert King的行。
現(xiàn)在讓我們導(dǎo)出到csv。要做到這一點(diǎn),在預(yù)覽模式下,按下按鈕:
并選擇“CSV格式...”。在對(duì)話框中,單擊“確定”并選擇文件將被保存的位置。最后,我們得到以下CSV文件:
如你所見,事實(shí)證明,使用FastReport轉(zhuǎn)換文檔相當(dāng)簡(jiǎn)單,這與在Excel編輯器中工作時(shí)間成本相當(dāng)。因此,F(xiàn)astReport可以成為處理CSV文件的最佳替代工具。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | 在線客服 | 聯(lián)系Elyn
推薦閱讀
- FastReport VCL報(bào)表控件開發(fā)者手冊(cè)
- FastReport Online Designer中文手冊(cè)
- Fastreport.Net教程2016
- Fastreport.Net用戶手冊(cè)
- FastReport.Net教程2017(持續(xù)更新中···)
- FastReport Online Designer教程2017(持續(xù)更新中···)
- 報(bào)表教程2017(持續(xù)更新中···)
- FastReport.Net v2018.1版本更新已經(jīng)發(fā)布!