c# - 如何在 .NET Interop.Excel.Workbooks.OpenText 中指定编码

标签 c# .net excel utf-8 interop

我无法找到有关使用 excel.Workbooks.OpenText 方法打开文本文件时指定编码(特别是 utf-8)的可能性的任何信息。我的问题是,我正在尝试打开一个以 UTF-8 编码的 CSV 文件,如果没有此设置,它会加载为一堆曲线。

非常感谢!

最佳答案

我发现这是导入 UTF-8 csv 文件的有效解决方案: (它可以稍微优化,但这样你就可以朝着正确的方向工作)

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Workbook wb;
Worksheet ws;
Range range;
int[,] a = new int[,] { { 1, 1 }, { 2, 2 }, { 3, 2 }, { 4, 2 }, { 5, 2 }, { 6, 2 }, { 7, 2 }, { 8, 2 }, { 9, 2 }, { 10, 2 }, { 11, 2 }, { 12, 2 }, { 13, 2 }, { 14, 2 }, { 15, 2 }, { 16, 2 }, { 17, 2 }, { 18, 2 }, { 19, 2 }, { 20, 2 }, { 21, 2 }, { 22, 2 } };
excelApp.Workbooks.OpenText(ofdGetExcel.FileName,
                                            65001,
                                            1,
                                            XlTextParsingType.xlDelimited,
                                            XlTextQualifier.xlTextQualifierDoubleQuote,
                                            false,
                                            false,
                                            false,
                                            true,
                                            false,
                                            false,
                                            false,
                                            a,
                                            Type.Missing,//",",
                                            Type.Missing,//".",
                                            Type.Missing,//false,
                                            Type.Missing);//false);
wb = excelApp.ActiveWorkbook;
ws = wb.Worksheets.get_Item(1);
range = ws.get_Range("A2");

Microsoft.Office.Interop.Excel.QueryTable QT = ws.QueryTables.Add("TEXT;" + ofdGetExcel.FileName, range);
QT.Name = ofdGetExcel.FileName;
QT.FieldNames = true;
QT.RowNumbers = true;
QT.FillAdjacentFormulas = false;
QT.PreserveFormatting = true;
QT.RefreshOnFileOpen = false;
QT.RefreshStyle = Microsoft.Office.Interop.Excel.XlCellInsertionMode.xlInsertDeleteCells;
QT.SavePassword = false;
QT.SaveData = true;
QT.AdjustColumnWidth = true;
QT.RefreshPeriod = 0;
QT.TextFilePromptOnRefresh = false;
QT.TextFilePlatform = 65001;
QT.TextFileStartRow = 1;
QT.TextFileParseType = Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited;
QT.TextFileTextQualifier = Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierDoubleQuote;
QT.TextFileConsecutiveDelimiter = false;
QT.TextFileTabDelimiter = false;
QT.TextFileSemicolonDelimiter = false;
QT.TextFileCommaDelimiter = true;
QT.TextFileSpaceDelimiter = false;
QT.TextFileDecimalSeparator = ",";
QT.TextFileThousandsSeparator = ".";

ws.QueryTables[1].Destination.EntireColumn.AutoFit();

ws.QueryTables[1].Refresh(false);

ws.QueryTables[1].Delete();

关于c# - 如何在 .NET Interop.Excel.Workbooks.OpenText 中指定编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29409096/

相关文章:

c# - WPF 绑定(bind)路径=/不工作?

c# - 在c#中从excel中获取jpeg格式的图像

c# - 值类型如何实现引用类型

c# - 将 JSON.NET JObject 的属性/标记转换为字典键

c# - .NET MySqlCommand @ 占位符与 MySQL 变量冲突

c# - 改DBML,如何改SQL数据库?

.net - 如何在 AutoMapper 中扫描和自动配置配置文件?

sql - 将 Excel 中的日期字符串转换为 SQL 日期时间

excel - 如何使用编程语言更改 Excel 中单元格的颜色

excel - 工作表更改两个选择相交