原創(chuàng)|使用教程|編輯:我只采一朵|2018-01-22 14:40:46.000|閱讀 765 次
概述:MS Excel電子表格編輯器在編輯CSV文件方面做得很好。但是如果你沒有電子表格呢?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
MS Excel電子表格編輯器在編輯CSV文件方面做得很好。你可以排序和過濾數(shù)據(jù),刪除不必要的列,添加編號。但是如果你沒有電子表格呢?編輯csv文件變成了噩夢。你必須跟蹤分隔符來理解這個或那個數(shù)據(jù)所指向的列。排序通常成為幾乎不可能完成的任務(wù),尤其是在處理大量數(shù)據(jù)時。
這種情況怎么解決?我們有FastReport.Net。我們可以使用csv作為報表的數(shù)據(jù)源。在報表內(nèi)部,執(zhí)行數(shù)據(jù)轉(zhuǎn)換。然后,導(dǎo)出回csv文件。
讓我們來看一個帶有姓名和地址列表的小型CSV文件:

首先,確定我們想要做的轉(zhuǎn)換:
創(chuàng)建一個新的報表。添加一個新的CSV數(shù)據(jù)源文件。
在報表頁面上,放置FIO和地址字段,并添加地址字段兩次。第一個添加的地址字段編輯如下: [Substring ([Addresses .Address], 0.6)] 。所以,我們將莫斯科從其他地址中單獨(dú)拎出來。如果城市名稱不同,我們需要更復(fù)雜的處理。為此,你需要使用報表腳本。對于添加到帶區(qū)的文本對象,你需要創(chuàng)建 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();
}
}
如你所見,我們使用正則表達(dá)式來選擇逗號前的數(shù)據(jù)。
現(xiàn)在讓我們回到已添加的第二個地址字段。由于我們把城市名稱分成了一個獨(dú)立的列,所以其余的地址必須留在這里。我們使用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();
}
}
現(xiàn)在我們按姓名排序數(shù)據(jù)。要做到這一點(diǎn),雙擊“數(shù)據(jù)”帶區(qū)。選擇“排序”選項卡。我們有三個字段可以排序。我們只指定第一個值 – 姓名:

我們需要的只是按照姓名“Robert King”篩選數(shù)據(jù)。要做的這一點(diǎn),再次雙擊數(shù)據(jù)帶區(qū)。在隨后出現(xiàn)的窗口中,選擇“過濾”選項卡并輸入表達(dá)式 [Addresses.Name]!="Robert King" 。

以預(yù)覽模式運(yùn)行報表:

所以,我們刪除了ZIP列,按姓名稱對列表進(jìn)行排序,將地址分成城市和街道,刪除了名字為Robert King的行。
現(xiàn)在讓我們導(dǎo)出到csv。要做到這一點(diǎn),在預(yù)覽模式下,按下按鈕:
并選擇“CSV格式...”。在對話框中,單擊“確定”并選擇文件將被保存的位置。最后,我們得到以下CSV文件:

如你所見,事實(shí)證明,使用FastReport轉(zhuǎn)換文檔相當(dāng)簡單,這與在Excel編輯器中工作時間成本相當(dāng)。因此,F(xiàn)astReport可以成為處理CSV文件的最佳替代工具。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動 | | 聯(lián)系Elyn
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn