CSV踩坑大全

2021-10-12 13:23:01 字數 2360 閱讀 3292

眾所周知,csv其實就是乙個文字檔案,占用的空間很小,行與行之間使用 ','分割,可以用office開啟,那這麼簡單的乙個東西會有什麼問題呢?

/**

* 字串處理和賦值

** @return

*/public string handlerstringandconvert

(string string)

因為csv檔案預設是以逗號分割的,如果你的文字中存在逗號,則就會自動分割,怎麼辦呢?就是要把逗號進行轉義。

/**

* 字串中間攜帶逗號,csv檔案需要進行轉義

** @param str

* @return

*/public string handlecomma

(string str)

str =

"\""

+ handlestring +

"\"";}

}return str;

}

有的時候我們需要在csv的內部展示多行資料,怎麼辦呢?只需要在尾部追加換行符即可。

string str =

"你的文字"

.concat

("\r\n"

);

這是軟體自設的問題,正常我們在輸入數字前加上 』 ,然後我們輸入的資料就會我們正常輸入的內容,為了避免這種情況的發生,我們只需要在文字的後面追加乙個製表符即可。

/**

* 字串處理和賦值

** @return

*/public string handlerstringandconvert

(string string)

這裡和上面保持一致,但是這麼做是完美的嘛?如果自己測試會發現,你雖然成功的讓自己的文字變成了想要的樣子,但是如果你用記事本或者notepad++開啟,你會發現每乙個帶上這個方法的字段後面都會帶上乙個tab,看著就像是乙個空格,如果刪除你的數字依舊會丟失前面的0。這個問題在網上找了很多答案,幾乎都是

string str = str +((

char)(

9)).

tostring()

;

但是我試了,我連大寫的tostring在哪我都不知道,所以呢?如果你想要保住0就需要加上"\t",不想保持0那就可以不加,如果二者都要,你可能得瘋掉,搞了好久,都搞不定。

最後推薦乙個方式生成csv,基於註解實現csv的匯出。

可以參考:

這個工具呢,有乙個問題,就是生成的文字時不帶雙引號的,也就是說你用記事本開啟,不會有引號的存在,如果需要,我做了一些調整:

//定義雙引號

private

static

final

char double_quotes =

'"';

/** * 拼接cvs**一行資料

* @param filedannotationmap

* @return

*/private

static

string getcsvoneline

(map

filedannotationmap, t linedate, class<

?> dataclass)

//4轉譯處理(放在el解析後,防止el解析邏輯出現么蛾子(el轉譯後出現csv邏輯符號))

linestrbuilder.

(double_quotes)

; linestrbuilder.

(datacolumn)

; linestrbuilder.

(double_quotes)

; linestrbuilder.

(csv_column_separator);}

catch

(nosuchfieldexception

| illegalacces***ception e)

", e);}

});return linestrbuilder.

(csv_rn)

.tostring()

;}/*** 自己寫乙個拼接,每個元素在生成的時候,前後加上雙引號即可

*/private

static string initcsvheaderline

(map

filedannotationmap)

private

static string join

(string string)

systemtap embedded C 踩坑筆記

官方文件 systemtap的embedded c中,不能 include 也不能用printf和print。那怎麼列印呢?用stap printf。用法與printf一樣。還可以訪問cript中的全域性變數。官方文件中的示例 global var global var2 100 function ...

Aggregation MongoDB踩坑記錄

對某些篩選條件進行分頁查詢,開始每一頁的有效data都不足pagesize,最後發現,aggregation 的pipeline是有先後順序的。錯誤 agg aggregation.newaggregation aggregation.skip curpage 1 pagesize aggregat...

feign踩坑 通過Feign上傳檔案(踩坑)

引入依賴 org.springframework.cloud spring cloud starter openfeign 服務提供者 restcontroller public inte ce fileuploadservice commonresultuploadfile requestpart...