일반 확장 가능한 Excel 가져오기 구현(Demo 포함)
17741 단어 Excel
배경.
프로그램을 통해 excel을 데이터베이스에 가져오는 것은 매우 흔히 볼 수 있는 기능이다.일반적인 방법은 excel을 DataTable로 바꾸고 DataTable를List
또한 일반적인 ExcelUtil 기본 클래스는 List
문제.
내가 개발하는 과정에서 excel 블록을 가져오는 데 다음과 같은 몇 가지 문제에 부딪혔다.
데모 프로그램 구조 개요
ps:퇴근해야 되는데 오늘은 이만큼 먼저 보내고,
여러분은 먼저 데모를 내려서 보셔도 됩니다. 기능이 모두 실현되었고 문제가 있으면 모두 함께 의사소통을 할 수 있습니다.
만약 여러분이 구체적인 절차를 알고 싶다면, 제가 다시 첨가하겠습니다.
생각을 실현하다
우선, 우리의 요구 사항은 다음과 같습니다.
/// <summary>
/// excel By Dean 20140320
/// :1 excel excel JHB、 、PV , JHB
///2 excel excel “ ” , Code & Name , Code “ ” , , “ ” DB Code
/// :1
/// 2 excel ,
/// 3 excel
/// </summary>
/// <typeparam name="Entity"></typeparam>
public class ImportUtil<Entity> where Entity : new()
public ImportUtil(Dictionary<string, string> allColumns)
{
AllColumns = allColumns;
}
// excel
Dictionary<string, string> allColumns = new Dictionary<string, string>
{
{"ID"," "},
{"StudentID"," | ID"},{"StudentName"," | ID"},
{"DisciplineID"," "},{"DisciplineName"," "},
{"Score"," "},
{"MakeUpExamTime"," "}
};
이 구조 함수는 매개 변수 all Columns를 전송합니다. Dictionary
/// <summary>
/// excel 《 》
/// </summary>
/// <param name="fileName">excel </param>
/// <param name="errorInfo"> </param>
/// <param name="converterFields"> </param>
/// <param name="customConverts"> (key ,value excel Func)</param>
/// <param name="dataValidateChecks"> excel , excel </param>
/// <returns> </returns>
public List<Entity> GetEntityList(string fileName,
List<string> errorInfo,
Dictionary<KnownDataType, List<string>> converterFields = null,
Dictionary<string, Func<object, object>> customConverts = null,
Dictionary<string, Func<object, string>> dataValidateChecks = null)
이 방법은 5개의 입력 매개 변수가 있는데 그 중에서 fileName과errorInfo는 반드시 져야 한다. 방법은 최종적으로 우리가 필요로 하는List
이 5개의 매개변수는 다음과 같습니다.
//
Dictionary<KnownDataType, List<string>> convertFields = new Dictionary<KnownDataType, List<string>>
{
{KnownDataType.Int, new List<string> {"ID", "StudentID", "DisciplineID"}},
{KnownDataType.Double, new List<string> {"Score"}}
};
//
Dictionary<string, Func<object, object>> customConverts = new Dictionary<string, Func<object, object>>
{
{
"StudentName", currColumn =>
{
int studentID;
if (currColumn != null && int.TryParse(currColumn.ToString(), out studentID))
{
var r = DataPool.EntireStudents.Find(c => c.ID == studentID);
if (r != null)
{
return r.Name;
}
}
return string.Empty;
}
},
{
"MakeUpExamTime", currColumn =>
{
DateTime colDateTime;
if (currColumn != null && DateTime.TryParse(currColumn.ToString(), out colDateTime))
{
return colDateTime;
}
return null;
}
}
};
//excel excel
Dictionary<string,Func<object,string>> dataValidateChecks = new Dictionary<string, Func<object, string>>
{
{
"ID", currColumn =>
{
int idInt;
if (currColumn!=null&&int.TryParse(currColumn.ToString(),out idInt))
{
return string.Empty;
}
return "ID ";
}
}
};
// excel
var res = importUtil.GetEntityList(excelPath, errors, convertFields, customConverts, dataValidateChecks);
총결산
이상은 excel의 사용자 정의 가져오기 기능을 완성했습니다. 감사합니다.
데모 소스
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel Grep toolExcel Grep tool ■히나가타 ■ 시트 구성 ExcelGrep.cls...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.