这是我的C#代码,Visual Studio 2015。
我想保存这些Excel单元格以转换文本文件。
例如,从AN50中选择AN1中的值,然后保存
" Range1.txt"
非常感谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
namespace WindowsFormsApplication4
{
static class Program
{
/// <summary>
[STAThread]
static void Main()
{
string testingExcel = @"V:\000.xlsx";
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Workbook xlWorkbook = xlApp.Workbooks.Open(testingExcel, Type.Missing, true);
_Worksheet xlWorksheet = (_Worksheet)xlWorkbook.Sheets[1];
//Range xlRange = xlWorksheet.UsedRange;
Range Range1 = xlWorksheet.get_Range("AN1","AN50");
foreach (Range a in Range1.Rows.Cells)
{
Console.WriteLine("Address: " + a.Address + " - Value: " + a.Value);
}
Range Range2 = xlWorksheet.get_Range("AO1", "AO50");
foreach (Range b in Range2.Rows.Cells)
{
Console.WriteLine("Address: " + b.Address + " - Value: " + b.Value);
}
xlWorkbook.Close();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlWorkbook);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp);
}
}
}
答案 0 :(得分:2)
对于这么小的范围,我说你可以很容易地遍历范围内的所有单元格并将它们转储到文件中。也就是说,如果您的文件变大或格式发生变化(比如说CSV),那么我认为您会在迭代方法的那一天懊恼。
Excel的文本/ CSV导出将吸引您在性能方面提出的所有COM实现。
即使您的示例很小,我建议让Excel执行繁重的工作,因为您无论如何都要使用COM。这是一个基本的例子:
Excelx.Range range = xlWorksheet.Range["AN1", "AN50"];
range.Copy();
Excelx.Workbook nb = xlApp.Application.Workbooks.Add();
Excelx.Worksheet ns = nb.Sheets[1];
ns.get_Range("A1").PasteSpecial(Excelx.XlPasteType.xlPasteValuesAndNumberFormats);
nb.Application.DisplayAlerts = false;
nb.SaveAs("Range.txt", Excelx.XlFileFormat.xlTextWindows);
nb.Close();
xlApp.Application.DisplayAlerts = true;