我使用以下代码从Excel工作表中获取数据: -
private static DataTable GetDataFromCSVFile(string csv_file_path)
{
DataTable csvData = new DataTable();
using (TextFieldParser csvReader = new TextFieldParser(csv_file_path))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn datecolumn = new DataColumn(column);
datecolumn.AllowDBNull = true;
csvData.Columns.Add(datecolumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
//Making empty value as null
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
return csvData;
}
}
但我需要从同一工作簿中的工作表中检索相同内容。任何想法如何在c#中使用数据表来做到这一点。
由于
答案 0 :(得分:0)
&#34;用户在Excel工作表中输入数据&#34;并不意味着输入xls或xlsx文件。这可能意味着用户使用MS Excel编辑CSV。你可以创建&#34;真正的excel&#34;包含来自4个源csv文件的数据的文件并读取新的单个文件,但您需要另一个API,而不是TextFieldParser。要读取新的xlsx文件,我使用DocumentFormat.OpenXml程序集。快速样品
using (var doc = SpreadsheetDocument.Open(_docPath, false))
{
var sheet = doc.WorkbookPart.Workbook.Sheets.Elements<Sheet>().First()
//Or iterate over all sheets, get sheet name, read it's data etc.
//i'm sure you can find a lot of samples
var worksheetPart = (WorksheetPart)doc.WorkbookPart.GetPartById(sheet.Id);
var sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
foreach (var row in sheetData.Elements<Row>())
{
//some code here
}
}