Excel에서 복사하고 CSV로 만드는 간단한 도구
9512 단어 .NETFrameworkC#.NET
요점
Excel 셀을 복사한 텍스트는 tsv이므로 Replace로 대체하고 csv에 저장하는 챌린지입니다.
경위
작업 효율성을 위해 Excel에서 CSV를 토하고 싶지만,
최근에는 보안 사정상 현장은 외부 네트워크에 연결되지 않고, VBA의 소스도 복사할 수 없는 경우도 많습니다.
그런데 곤란했지만, 어떻게 csv 파일을 만들까 생각했을 때, Excel로부터 셀을 카피했을 때의 특징을 이용하면 좋다고 알았습니다.
Excel에서 복사한 셀은 텍스트에서 tsv로 가지고 있으므로 구분 기호를
\t
에서 ,
로 바꾸면 됩니다.완제품의 외관
적절하게 텍스트 상자를 배치
(※AcceptsEnter, AcceptsTab를 ON(true)으로 해 주세요)
셀 복사
붙여 넣으면 파일 경로가 나오므로 열면
순식간에 CSV 파일의 완성!
일반판과 원라이너판
일반 버전
CopyTsvToCsv_Normal.cs
string[] sepArr = new string[] { "\r\n" }; // Split用
string toCsv = content.Replace("\t", ","); // tsv→csvへ
string[] lines = toCsv.Split(sepArr, StringSplitOptions.RemoveEmptyEntries); // 行を分割
File.WriteAllLines(fi.FullName, lines); // 上の行を削除してFile.WriteAllText(fi.FullName, toCsv)でもOK
원라이너
CopyTsvToCsv_One-Liner.cs
File.WriteAllLines(fi.FullName, content.Replace("\t", ",").Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));
응용 플랜
출처
이하, 상기의 정리입니다.
CopyTsvToCsv.cs
private void TxbInputTsv_TextChanged(object sender, TextChangedEventArgs e)
{
DateTime dtNow = DateTime.Now;
string fileName = string.Format("out_{0}.csv", dtNow.ToString("yyyyMMddHHmmss"));
FileInfo fi = new FileInfo(Path.Combine(di.FullName, fileName));
if (fi.Exists) return;
OutPutCsv(fi, ((TextBox)sender).Text);
}
private void OutPutCsv(FileInfo fi, string content)
{
if (string.IsNullOrEmpty(content.Trim())) return;
try
{
// ワンライナー版
// File.WriteAllLines(fi.FullName, content.Replace("\t", ",").Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));
string[] sepArr = new string[] { "\r\n" };
string toCsv = content.Replace("\t", ",");
string[] lines = toCsv.Split(sepArr, StringSplitOptions.RemoveEmptyEntries);
File.WriteAllLines(fi.FullName, lines);
TxbInputTsv.Text = string.Format("Save: {0}", fi.FullName);
Thread.Sleep(5000);
TxbInputTsv.Text = "";
}
catch(Exception ex)
{
TxbInputTsv.Text = ex.ToString();
}
}
Reference
이 문제에 관하여(Excel에서 복사하고 CSV로 만드는 간단한 도구), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/urahito_solution/items/e806b681d316ba2b59e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)