gpt4 book ai didi

c# - Excel._Worksheet.Columns.Autofit() 方法挂起

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:53 51 4
gpt4 key购买 nike

我的 sqldatareader 返回了大约 200 行数据。其中大约一半的行有一列包含整个 xml 文档。我假设此专栏导致 autofit() 方法挂起。我怎样才能让它抛出异常或成功完成。我不在乎是哪一个,我只需要这个 [自动化] 程序来完成。

Excel.Application xl = null;
Excel._Workbook wb;
Excel._Worksheet ws;

try
{
xl = new Microsoft.Office.Interop.Excel.Application();
xl.Visible = false;

while (reader.HasRows && !done)
{
wb = (Excel._Workbook)(xl.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet));
ws = (Excel._Worksheet)wb.ActiveSheet;

// Insert column headers
for (int counter = 0; counter < reader.FieldCount; counter++)
ws.Cells[1, counter + 1] = reader.GetName(counter);

// Write the data to the excel file
while (reader.Read())
{
for (int counter = 1; counter <= reader.FieldCount; counter++)
{
// Need to format this column so excel doesn't change how it looks
if (report.ReportName == "RPTAAMVANetBatch" && reader.GetName(counter - 1) == "CorrelationID")
ws.Cells[rowCounter, counter] = String.Format("''{0}'", reader.GetValue(counter - 1));
else
ws.Cells[rowCounter, counter] = reader.GetValue(counter - 1);
}
rowCounter++;
}

RecordsProcessed = rowCounter - 1;

// Format the excel file to liking
ws.get_Range(ws.Cells[1, 1], ws.Cells[rowCounter - 1, reader.FieldCount]);
ws.Columns.AutoFit();

最佳答案

除了我上面的评论,我正在使用我几天前创建的这个特定示例文件,其中有 100 行,在 Col E 中,我有几封电子邮件的完整正文( 我已经放了一个红框来保护电子邮件的身份和内容)

enter image description here

这是一个简单的 VBA 代码,我运行它来检查自动调整 E 列所需的时间

Sub Test()
Dim startTime As String
Dim endTime As String

startTime = Now

Columns("E:E").EntireColumn.AutoFit

endTime = Now

Debug.Print "The process started at " & startTime & " and got over at " & endTime
End Sub

截图:

enter image description here

你的程序花费了更多的时间,因为有 200 行,而且你的每个 Excel 单元格中的数据可能比我的多。

那么解决方案是什么?

我能想到的最佳解决方案是将列扩大到 MAX (254.86) 在将大量数据写入其中之前。像这样

        Excel.Range Rng = ws.get_Range("E:E",System.Type.Missing);

Rng.EntireColumn.ColumnWidth = 254;

注意:不要对该列或整个工作表使用自动调整。如果您确实需要使用 Autofit,则将其拆分。例如,在我的例子中,我会从第 1 列到第 4 列然后从第 6 列到最后一列进行自动调整

关于c# - Excel._Worksheet.Columns.Autofit() 方法挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840740/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com