如何从Excel工作表中读取并将标记的选择(区域)加载到多维数组中?Excel中的列本身可以是多维数组,因为它不仅包含一个值.
现在的想法(不确定这是好还是坏)是在所有Excel.Area(选定字段)中进行for循环,并将该字段的内容添加到多维数组中.由于多维数组的类型为object [,],因此非泛型,因此没有方便的add()方法.所有这些都需要手动完成.
不知道这种方法是否合适,或者是否可以更有效地完成?
我正在尝试从excel工作簿中读取数据,并注意到需要很长时间才能阅读3560行和7列的工作表,大约需要1分17秒.我所做的只是遍历整个工作表并将值存储在列表中.
这是正常的,还是我做错了什么?
static void Main(string[] args)
{
List<string> testList = new List<string>();
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\Users\rnewell\Desktop\FxData.xlsx");
Excel.Worksheet worksheet = workbook.Sheets[1];
Excel.Range range = worksheet.UsedRange;
int rowCount = range.Rows.Count;
int colCount = range.Columns.Count;
int rowCounter = 1;
int colCounter = 1;
while (rowCounter < rowCount)
{
colCounter = 1;
while (colCounter <= colCount)
{
//Console.Write(range.Cells[rowCounter, colCounter].Value2.ToString() + " ");
testList.Add(range.Cells[rowCounter, colCounter].Value2.ToString());
colCounter++;
}
Console.WriteLine();
rowCounter++;
}
Console.ReadKey();
excelApp.Workbooks.Close();
}
Run Code Online (Sandbox Code Playgroud) 我的C#应用程序从excel文件中获取了大量数据并对其进行处理,然后将其写回文件.
问题是从Excel文件加载数据时,需要一些时间(大约7000字段的Excel需要30秒)
我想让它更快,是否有任何方法可以在相当长的时间内使其更快?
我用来获取数据的代码是:
streamReader = new StreamReader(@"ExcelPath.txt");
string path = streamReader.ReadLine();
//An Excel Application ==(contains)==> [Many] Excel WorkBook ==(contains)==>[Many] Excel WorkSheets==(contains)==>[Many] Ranges
Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook myworkbook = excelapp.Workbooks.Open(path, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true);
Microsoft.Office.Interop.Excel.Sheets myworksheets = myworkbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet myworksheet =myworksheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range range = myworksheet.UsedRange;
string[] data = new string[range.Rows.Count];
int start = 0;
for (start = 3; start < range.Rows.Count; start++)
{
Microsoft.Office.Interop.Excel.Range myrange = myworksheet.get_Range("O" + start.ToString(), System.Reflection.Missing.Value); …Run Code Online (Sandbox Code Playgroud)