난 그냥 비슷한 상황을 다루는 시작 해요,하지만 난이 귀하의 요구에 충족 할 수 있습니다 믿습니다
http://www.codeproject.com/Articles/246772/Convert-xlsx-xls-to-csv
이 당신이
http://exceldatareader.codeplex.com/
NuGet
에서 얻을 수있는 ExcelDataReader API를 사용을
Tim이 말했듯이, 열과 구조가 시트간에 동일하다는 것을 확실히 확인하고 유효성을 검사해야 할 것입니다. 첫 번째 시트 다음에 모든 시트의 머리글 행을 먹어야 할 수도 있습니다. 내가 끝나면 업데이트와 코드 샘플을 게시 할 것입니다.
업데이트 [7/15/2013]. 여기 내 완성 된 코드가 있습니다. 그다지 공상적인 것은 아니지만 일을 끝내게됩니다. 모든 시트는 DataSet의 테이블이므로 대상에 추가하는 테이블을 반복하면됩니다. 나는 MongoDB로 출력하고 있지만, CSV 파일을위한 StreamWriter를 쉽게 교체 할 수 있다고 생각합니다.
private static void ImportValueSetAttributeFile(string filePath)
{
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
// Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
// DataSet - The result of each spreadsheet will be created in the result.Tables
DataSet result = excelReader.AsDataSet();
// Free resources (IExcelDataReader is IDisposable)
excelReader.Close();
var connectionString = ConfigurationManager.ConnectionStrings[0].ConnectionString;
var database = ConfigurationManager.AppSettings["database"];
var mongoAccess = new MongoDataAccess(connectionString, database);
var cdm = new BaseDataManager();
int ind = 0;
for (int i = 0; i < result.Tables.Count; i++)
{
int row_no = 1;
while (row_no < result.Tables[ind].Rows.Count) // ind is the index of table
// (sheet name) which you want to convert to csv
{
var currRow = result.Tables[ind].Rows[row_no];
var valueSetAttribute = new ValueSetAttribute()
{
CmsId = currRow[0].ToString(),
NqfNumber = currRow[1].ToString(),
ValueSetName = currRow[2].ToString(),
ValueSetOid = currRow[3].ToString(),
Definition = currRow[4].ToString(),
QdmCategory = currRow[5].ToString(),
Expansion = currRow[6].ToString(),
Code = currRow[7].ToString(),
Description = currRow[8].ToString(),
CodeSystem = currRow[9].ToString(),
CodeSystemOid = currRow[10].ToString(),
CodeSystemVersion = currRow[11].ToString()
};
cdm.AddRecords<ValueSetAttribute>(valueSetAttribute, "ValueSetAttributes");
row_no++;
}
ind++;
}
}
모든 시트의 형식이 정확히 동일합니까? 예 : 각각 헤더 행이 있습니까? 결합 된 콘텐츠가 너무 커서 한 장에 들어갈 수 없습니까? –
CSV 파일은 기본적으로 원시 텍스트 파일이며 여러 탭을 지원하지 않습니다. 시트의 형식이 같으면 다른 모든 시트의 내용에 첫 번째 내용을 추가 할 수 있습니다. –