我用C#编写了一个程序,该程序应该将excel工作簿中的每个工作表都转换为csv并将其保存在自己的文件中。我遇到的问题是,当我打开每个文件时,它们都具有与最后一个工作表相同的内容。这是我的代码:
public void Main()
{
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Open(@"C:\Users\user\Desktop\Book1.xlsx");
foreach (Excel.Worksheet sht in workbook.Worksheets)
{
sht.Select();
System.Diagnostics.Debug.WriteLine(sht.Name.ToString());
workbook.SaveAs(string.Format("{0}{1}.csv", @"C:\Users\user\Desktop\", sht.Name), Excel.XlFileFormat.xlCSV, Excel.XlSaveAsAccessMode.xlNoChange);
}
workbook.Close(false);
Dts.TaskResult = (int)ScriptResults.Success;
}
任何帮助都会很棒,谢谢!
我不知道我要通过SSIS中的脚本任务来执行此操作是否值得一提。因此,我运行的只是一个脚本任务,其中包含上面的代码。
答案 0 :(得分:0)
在正常情况下,您提供的代码可以正常运行。如果excel应用程序显示了一个消息框,需要权限才能启用编辑,可能会遇到一些问题,因为其他工作表受到保护,因此存在访问其他工作表的权限问题。
首先,手动打开excel并检查您是否可以访问所有工作表并手动执行保存操作。如果您没有遇到任何问题,则应避免在使用Interop.Excel库时excel显示消息框或其他促销。
此外,检查目标路径中尚不存在Csv。
尝试使用类似的代码:
viewModel = ViewModelProviders.of(activity!!).get(SharedViewModel::class.java)
我测试了以下代码,并成功转换了所有工作表。